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