Вопрос

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

Это было полезно?

Решение

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

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

Вот ссылка на патентный документ. Отметьте патентную ссылку

Несмотря на то, что это было .NET Guy, я чувствую Основы Марка развертки Ссылка даст вам хорошее понимание того, как это работает.

Другие советы

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

Википедия

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top