GC находит объекты, недостижимые от корней, и освобождает их память. Конкретные алгоритмы различаются: маркировка, очистка, копирование и уплотнение комбинируются в разных сборщиках.
Как работает современный сборщик мусора в Java, какие старые алгоритмы существуют и на каком принципе он основан?
GC находит объекты, недостижимые от корней, и освобождает их память. Конкретные алгоритмы различаются: маркировка, очистка, копирование и уплотнение комбинируются в разных сборщиках.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
GC находит объекты, недостижимые от корней, и освобождает их память. Конкретные алгоритмы различаются: маркировка, очистка, копирование и уплотнение комбинируются в разных сборщиках.
Классические подходы включают mark-sweep, copying и mark-compact. Например, G1 делит heap на регионы, использует поколения, конкурентную маркировку и перенос живых объектов при очистке выбранных областей. Часть работы всё равно требует пауз. Единого «современного GC» нет: выбор зависит от JVM и требований к задержке и пропускной способности. Наличие циклических ссылок само по себе не мешает сборке недостижимого графа.
Источник: docs.oracle.com.