Junior — Middle
Za jakých situací a za jakých podmínek Java volá garbage collector pro různé typy odkazů?
sobes.tech AI
Odpověď od AI
В Java сборщик мусора (GC) автоматически освобождает память, когда объекты становятся недоступными. Типы ссылок влияют на то, когда объект считается достижимым:
- Strong Reference (сильная ссылка) — обычная ссылка. Объект не будет собран, пока есть хотя бы одна сильная ссылка.
- Soft Reference (мягкая ссылка) — объект может быть собран при нехватке памяти, но обычно сохраняется.
- Weak Reference (слабая ссылка) — объект может быть собран при следующем цикле GC, если нет сильных ссылок.
- Phantom Reference (фантомная ссылка) — используется для отслеживания удаления объекта, объект уже считается недостижимым.
Сборщик мусора вызывается, когда:
- Память заканчивается или достигается порог.
- JVM решает оптимизировать использование памяти.
Объекты с сильными ссылками живут дольше, мягкие и слабые — могут быть удалены раньше, фантомные — для специальных целей.
Пример использования слабой ссылки:
WeakReference<MyObject> weakRef = new WeakReference<>(new MyObject());
// Если больше нет сильных ссылок, объект может быть собран GC