Sobes.tech
Back to questions
Junior — Middle
71

В каких ситуациях и при каких условиях Java вызывает сборщик мусора для различных типов ссылок?

Companies where asked
GrowFood

Answer from AI

sobes.tech AI

В Java сборщик мусора (GC) автоматически освобождает память, когда объекты становятся недоступными. Типы ссылок влияют на то, когда объект считается достижимым:

  • Strong Reference (сильная ссылка) — обычная ссылка. Объект не будет собран, пока есть хотя бы одна сильная ссылка.
  • Soft Reference (мягкая ссылка) — объект может быть собран при нехватке памяти, но обычно сохраняется.
  • Weak Reference (слабая ссылка) — объект может быть собран при следующем цикле GC, если нет сильных ссылок.
  • Phantom Reference (фантомная ссылка) — используется для отслеживания удаления объекта, объект уже считается недостижимым.

Сборщик мусора вызывается, когда:

  • Память заканчивается или достигается порог.
  • JVM решает оптимизировать использование памяти.

Объекты с сильными ссылками живут дольше, мягкие и слабые — могут быть удалены раньше, фантомные — для специальных целей.

Пример использования слабой ссылки:

WeakReference<MyObject> weakRef = new WeakReference<>(new MyObject());
// Если больше нет сильных ссылок, объект может быть собран GC