-2

私の質問は、ジェネレーション 0 にオブジェクトがあり、ファイナライズ メソッドもオーバーライドしたことです。

gc が gen0 を収集すると、ファイナライズする必要があることがわかり、すぐに解放せず、これらのオブジェクトを gen1 に昇格させますか? したがって、これらは gc が gen1 を収集する場合にのみ解放されます。これらのオブジェクトが再び使用されないと仮定すると、それらはガベージです

ありがとう!

4

1 に答える 1

4

Finalize メソッドは、GC がガベージと判断したオブジェクトのガベージ コレクションの完了時に呼び出されます。これは、Finalize メソッドがフィールドにアクセスするコードを実行する可能性があるため、これらのオブジェクトのメモリをすぐに再利用できないことを意味します。ファイナライズ可能なオブジェクトはコレクション内で存続する必要があるため、別の世代に昇格し、オブジェクトが必要以上に長く存続することを余儀なくされます。リヒター J. -C# 経由の CLR

そうそう、それは昇格します:)

于 2016-01-08T17:26:01.520 に答える