ゴミコレクターはどのように根を識別しますか
-
26-10-2019 - |
質問
マークスイープガベージコレクターの最初のフェーズは、ヒープ上のすべてのライブオブジェクトをマーク(検索)することです。これを行うには、すべてのマーキングが始まる場所から出発点またはルートが必要です。 GCはそのような根をどのように識別しますか?
解決
ルートセットenumeratiosと呼ばれる手法を使用すると、すべてのルートが識別されます。これは、Mark-Sweep特許文書からの文です。
第1フェーズでは、現在実行中のプログラムからのオブジェクトへのすべての直接参照が特定される場合があります。これらの参照はルートと呼ばれるか、ルートセットと呼ばれ、そのようなすべての参照を識別するプロセスは、ルートセット列挙と呼ばれる場合があります
特許文書のリンクは次のとおりです。 マークスイープパテントリンク
.net Guyによるものだった場合、私は感じています マークスイープの基本 リンクは、それがどのように機能するかをよく理解することができます。
他のヒント
「著名なオブジェクトのセットは到達可能であると想定されています。これらは根として知られています。通常、これらには含まれます。 コールスタックのどこからでも参照されるすべてのオブジェクト(つまり、現在呼び出されている関数のすべてのローカル変数とパラメーター)、およびグローバル変数。
所属していません StackOverflow