Как сборщик мусора идентифицирует корни - PullRequest
3 голосов
/ 11 января 2012

Первый этап уборщика мусора с меткой - это пометить (найти) все живые объекты в куче.Для этого должна быть отправная точка или корень, откуда начинается вся маркировка.Как GC идентифицирует такие корни?

Ответы [ 2 ]

3 голосов
/ 11 января 2012

"Предполагается, что выделенный набор объектов достижим: они известны как корни. Как правило, они включают все объекты, на которые есть ссылки из любого места в стеке вызовов (то есть все локальные переменные и параметры ввызываемые функции) и любые глобальные переменные.

Википедия

2 голосов
/ 11 января 2012

Используя технику, называемую перечислением корневых множеств, все корни будут идентифицированы.Вот предложение из патентного документа Mark-sweep.

На первом этапе могут быть идентифицированы все прямые ссылки на объекты из запущенных в настоящее время программ.Эти ссылки называются корнями или вместе корневым набором, и процесс идентификации всех таких ссылок можно назвать перечислением корневого набора

. Здесь приведена ссылка на патентный документ. Mark Sweep патентная ссылка

Даже если это парень .NET, я чувствую Основы Mark Sweep ссылка даст вам хорошее понимание того, как она работает.

...