Как при Minor GC учитываются ссылки из Old Generation на объекты в Young Generation, если трассировка Old Generation не выполняется?

Ссылки из старого поколения учитывают через служебные структуры, обновляемые write barriers: card tables и remembered sets. Поэтому young collection не обязана повторно трассировать всё Old Generation.

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

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

Ссылки из старого поколения учитывают через служебные структуры, обновляемые write barriers: card tables и remembered sets. Поэтому young collection не обязана повторно трассировать всё Old Generation.

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

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

Ссылки из старого поколения учитывают через служебные структуры, обновляемые write barriers: card tables и remembered sets. Поэтому young collection не обязана повторно трассировать всё Old Generation.

При записи ссылки JVM отмечает соответствующий участок или отношение регионов. Во время сборки проверяются эти отмеченные области как дополнительные источники ссылок в собираемую область. Например, G1 использует remembered sets для входящих ссылок в collection set. Конкретное устройство зависит от GC, поэтому карточки и remembered sets нельзя считать полностью одинаковыми у всех сборщиков.

Источник: docs.oracle.com.

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

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

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

Подробнее