0

素晴らしいものを提供してくれた Jeffrey に感謝します 。 http://msdn.microsoft.com/en-us/magazine/bb985010.aspx

「ガベージ コレクターはファイナライズ キューをスキャンして、これらのオブジェクトへのポインターを探します。ポインターが見つかると、ポインターはファイナライズ キューから削除され、freachable キュー (「F-reachable」と発音) に追加されます。

上記から、オブジェクト J、I、E はファイナライズ キューから fReachable キューに移動されます。

Finalization Queue から fReachable Queue への移行については明確ではありません。

キューの FIFO ロジックはどうですか。F をデキューせずにオブジェクト E をデキューする方法は?

ファイナライゼーション キューまたはファイナライゼーション リストのどちらであるか。

親切に光を当ててください。

4

1 に答える 1

4

「ファイナライズキュー」および「侵害可能なキュー」というフレーズに「キュー」という単語が含まれているにもかかわらず、これらのコレクション内のオブジェクトが処理される順序については、何も想定しないでください。「ファイナライズ可能なリスト」という用語の方がわかりやすいと思います。これを「キュー」と呼ぶことができる唯一の理由は、ガベージコレクターが大きなオブジェクトを識別した後、新しいファイナライズキューを開始し、1つのエントリの各エントリにアクセスする場合です。次に、各エントリは破棄されるか(ファイナライザーが抑制されている場合)、新しいファイナライズキューに追加されるか(オブジェクトが保持用にタグ付けされている場合)、または侵害可能なキューに追加されます(オブジェクトがまだ保持用にタグ付けされていない場合)。

于 2012-06-01T02:21:26.643 に答える