Встречается на собеседованиях • сегодня

Как Garbage collector понимает, что объект можно уничтожить

Garbage Collector (GC) в Java определяет, что объект можно уничтожить, используя алгоритм достижимости. Объект считается недостижимым и подлежащим сборке, если нет ни одной ссылки на него из активных объектов (например, из стека вызовов, статических полей или других живых объектов).

Основные механизмы:

  1. Счетчик ссылок (редко используется в Java) — подсчитывает ссылки на объект, но не справляется с циклическими зависимостями.
  2. Tracing (Mark-and-Sweep) — GC помечает все достижимые объекты, начиная с корневых (GC Roots), а затем удаляет непомеченные.

Пример:

java
Object obj1 = new Object(); // Создаем объект (достижим)
Object obj2 = obj1;         // obj2 ссылается на тот же объект
obj1 = null;                // obj1 больше не ссылается, но obj2 держит объект
obj2 = null;                // Теперь объект недостижим — GC может его удалить

GC Roots включают:

  • Локальные переменные в стеке
  • Статические поля
  • Активные потоки
  • JNI-ссылки

Объекты в циклических зависимостях также удаляются, если они недостижимы из корней.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы