Фактическая реализация Sun для Java время от времени копирует все ссылочные / живые объекты. Пространство, из которого было скопировано, может быть снова использовано для выделения памяти.
Тем не менее, ваши примеры наносят ущерб производительности. listRubriques.clear()
не требуется (за исключением того, что вы держите где-то еще ссылку на него), потому что все, на что ссылается listRubrique, является мусором, в тот момент, когда на listRubriques больше не ссылаются. listRubriques = null
может также не понадобиться, если переменная listRubriques впоследствии выйдет из области видимости (возможно, потому что это локальная переменная и метод заканчивается здесь).
Не только вызов clear не нужен, поскольку clear обращается к памяти объекта, который впоследствии больше не используется, к объекту обращаются, и современные процессоры помещают его в свой кэш. Таким образом, мертвый объект явно отправляется в кэш процессора - некоторые, возможно, более полезные данные будут перезаписаны для этой операции.
Эта статья является хорошим справочным материалом для получения дополнительной информации о сборщике мусора Java.
РЕДАКТИРОВАТЬ : Чтобы отреагировать на редактирование вопроса: сборщик мусора (по крайней мере, реализация, используемая Sun) запускается из некоторых корневых ссылок и копирует все объекты, к которым он может обратиться из этих ссылок, и что ссылки на скопированные объекты. Таким образом, ваши объекты с круговой ссылкой являются мусором, так как никакая «внешняя» ссылка не указывает на них, и память будет возвращена в сборщик мусора.