Java не подсчитывает ссылки, поэтому не имеет значения, круглые ли ссылки.
Java использует algorthim типа метки и развертки при более высоких плотностях памяти и копию algorthim при более низких плотностях в версиях JVM 1.4, 1.5 и 1.6. Метка и развертка начинают помечать все «достижимые» из основного потока программы, а также очищает и сжимает все, что не было отмечено. Копирование и очистка копирует все объекты, доступные для основного потока, в новую память, а затем очищает старые блоки памяти.
Поскольку оба эти метода являются "достижимыми из основного потока", не имеет значения, если вы сделаете несколько циклических ссылок. Если ссылки «доступны из основного потока», тогда весь круг будет помечен и сохранен. Если циклическая ссылка недоступна для основного потока, она в конечном итоге будет очищена, поскольку она не помечена как используемая.
Java оптимизирует сборку мусора из поколения в поколение. Для более подробной информации смотрите здесь .
Java 1.7 может иметь новую стратегию сборки мусора по умолчанию. Он называется G1, что сокращенно от Garbage First. Они играли с ним в ветке 1.6, и вы можете включить его, если хотите. Это намного быстрее, чем стандартная сборка мусора, но неясно, будет ли она без ошибок или останется быстрее во всех важных случаях использования. Для получения дополнительной информации читайте о Garbage First