Когда объект с цепочкой ссылок может быть удалён GC

Все три становятся кандидатами на сборку, когда теряют достижимость от GC roots. Фактический момент освобождения выбирает сборщик, а не присваивание null само по себе.

Короткий ответ

Что ответить на собеседовании

Все три становятся кандидатами на сборку, когда теряют достижимость от GC roots. Фактический момент освобождения выбирает сборщик, а не присваивание null само по себе.

Подробный разбор

Ответ с пояснениями

Условие

В Java объект A ссылается на B, B — на C. Внешняя сильная ссылка на A удалена, других путей от GC roots к этим объектам нет. Когда они могут быть освобождены?

Ответ

Все три становятся кандидатами на сборку, когда теряют достижимость от GC roots. Фактический момент освобождения выбирает сборщик, а не присваивание null само по себе.

Цикл ссылок между объектами не удерживает их, если весь цикл недостижим снаружи. Локальные переменные, статические поля и работающие потоки могут сохранять путь достижимости. Ресурсы вроде файлов закрывайте явно: нельзя привязывать своевременное освобождение внешних ресурсов к неопределённому запуску GC.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее