Механизмы сборщика мусора (GC) в Java определяют, какие объекты можно освободить из памяти, основываясь на достижимости объектов из корневых ссылок (root references).
Каким образом механизмы сборщика мусора определяют, какой объект следует освободить из памяти?
Механизмы сборщика мусора (GC) в Java определяют, какие объекты можно освободить из памяти, основываясь на достижимости объектов из корневых ссылок (root references).
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Механизмы сборщика мусора (GC) в Java определяют, какие объекты можно освободить из памяти, основываясь на достижимости объектов из корневых ссылок (root references).
Основной принцип — сборка мусора по достижимости:
- Сборщик начинает с корневых объектов, таких как локальные переменные в стеке, статические поля и JNI-ссылки.
- Затем он рекурсивно обходит все объекты, на которые есть ссылки из корневых.
- Все объекты, до которых нельзя добраться из корней, считаются недостижимыми и подлежат удалению.
Пример: если объект не связан ни с одной переменной или другим объектом, доступным из текущего контекста, он считается мусором.
Некоторые сборщики мусора используют дополнительные техники, например, подсчет ссылок или трассировку поколений, но базовый критерий — достижимость объекта из корней.