Вопрос по жизненному циклу объекта - PullRequest
0 голосов
/ 30 июня 2011

В Java следующий жизненный цикл объекта

 Created
 In use (strongly reachable)
 Invisible
 Unreachable
 Collected
 Finalized
 Deallocated

Мой вопрос: где здесь сборка мусора?Когда мы говорим, что объект "собран мусором"?Это после последней стадии цикла?Пожалуйста, уточните.

Ответы [ 2 ]

3 голосов
/ 30 июня 2011

Я хочу немного расширить ответ, данный Дж. Б. Низет :

Объект переходит в недостижимое состояние, когда нет более сильных ссылок на него.Когда объект недоступен, он является кандидатом на сбор.

Объект находится в собранном состоянии, когда сборщик мусора распознал объект как недоступный и готовит его для окончательной обработки в качестве предвестника освобождения.Если у объекта есть метод finalize, он помечается для завершения.

Объект находится в завершенном состоянии, если он все еще недоступен после запуска метода finalize, если таковой имеется.Завершенный объект ожидает освобождения.

Состояние освобождения является последним этапом сборки мусора.Если объект все еще недоступен после выполнения всех вышеперечисленных работ, он становится кандидатом на освобождение.

Смотрите здесь для получения дополнительной информации.

3 голосов
/ 30 июня 2011

Я бы сказал, что сборка мусора начинается, когда объект переходит из недостижимого в собранный, и останавливается, когда объект освобождается.Обычно вам не нужно сильно заботиться, если вы не используете финализаторы, чего не следует делать в 99,999% случаев.

...