マーク スイープ ガベージ コレクターの最初のフェーズは、ヒープ上のすべてのライブ オブジェクトをマーク (検索) することです。これを行うには、すべてのマーキングが始まる開始点またはルートが必要です。GC はそのようなルートをどのように識別しますか?
質問する
873 次
2 に答える
3
「識別されたオブジェクトのセットは、到達可能であると想定されます。これらはルートとして知られています。通常、これらには、コール スタック内の任意の場所から参照されるすべてのオブジェクトが含まれます (つまり、現在呼び出されている関数のすべてのローカル変数とパラメーター)。およびグローバル変数。
于 2012-01-11T00:41:29.240 に答える
2
ルート セット列挙と呼ばれる手法を使用すると、すべてのルートが識別されます。これは、Mark-sweep の特許文書からの一文です。
最初のフェーズでは、現在実行中のプログラムからのオブジェクトへのすべての直接参照が識別されます。これらの参照はルート、またはまとめてルート セットと呼ばれ、そのようなすべての参照を識別するプロセスはルート セット列挙と呼ばれる場合があります。
ここに特許文書へのリンクがあります。マークスイープ特許リンク
.NET の担当者によるものですが、マーク スイープリンクの基本を読めば、それがどのように機能するかをよく理解できると思います。
于 2012-01-11T00:48:42.583 に答える