Большой круговой эталон и сборщик мусора JVM - PullRequest
3 голосов
/ 17 февраля 2012

Способна ли JVM найти большую круговую ссылку и собрать объекты?Есть ли официальная документация / ссылка, в которой говорится то же самое?или у вас есть хороший или плохой опыт работы со сборкой мусора больших циклических ссылок.

Ссылка для обновления: http://java.sun.com/docs/books/performance/1st_edition/html/JPAppGC.fm.html#997442

Ответы [ 2 ]

12 голосов
/ 17 февраля 2012

В упрощенном виде JVM использует Tracing Garbage Collection , Mark-and-Sweep.Циркулярные ссылки не мешают правильному поведению такого алгоритма, потому что он начинается с «базового» уровня и работает через ссылки, чтобы найти те элементы, к которым можно добраться оттуда.Все, что не может быть достигнуто, доступно для сбора / освобождения.

Стоит отметить, что сборщики мусора JVM, как правило, намного сложнее, чем многие, с множеством оптимизаций для ускорения работы.При этом общие свойства алгоритма метки и развертки верны для него.

3 голосов
/ 17 февраля 2012

Да. Сборщик мусора JVM может работать с циклическими ссылками.

Сборщик мусора, используемый JVM, не является сборщиком мусора с подсчетом ссылок. Вместо этого он находит мусор, отслеживая ссылки, которые все еще доступны (ссылки на стеки всех потоков или статические ссылки).

...