私が理解している限り、すべてのバージョンの.NETには3世代のガベージコレクションがあります(0,1,2)。.NETでは、GC.MaxGenerationは2ではありませんか?
GC.MaxGeneration
を調べると2以外の結果が出ることはありますか? GC世代数が異なる他のフレームワーク上にGCがありますか?
私が理解している限り、すべてのバージョンの.NETには3世代のガベージコレクションがあります(0,1,2)。.NETでは、GC.MaxGenerationは2ではありませんか?
GC.MaxGeneration
を調べると2以外の結果が出ることはありますか? GC世代数が異なる他のフレームワーク上にGCがありますか?
GC.MaxGenerationアプリケーションの寿命のために一定であることは、それ自体で実装の詳細であることに留意すべきである。この実装のためインプリ
に
ノート、
MaxGeneration
プロパティによって返される値アプリケーションを実行中の の寿命の間、一定のままであることが保証されます。
これは、MaxGeneration
.NETフレームワークの他の実装で2
異なっていてもよいが、それはまたがでガベージコレクタによって使用される世代の数に応じて(プログラム実行中を変化させることができるだけでなく、意味プロパティゲッターが呼び出される時刻)。
他の実装では、状況に応じて異なるガベージコレクタを使用することもできます。たとえば、MonはBoehm non-generational GC(は常に0
)、またはSGen generational GC(2世代のみを実装するため、MaxGeneration
は常に1
以下になります)のいずれかを使用できます。
私は分かりません。実行中のアプリケーションの存続期間中一定であることが保証されていますが、プログラムの実行中に変化する可能性があります。 –
@John、この実装では*と言われています。つまり、「MaxGeneration」の残りの定数は、Microsoftの.NETフレームワークの実装にのみ適用されます。 –
SSCLIでは、2が返されるようにハードコードされているため、実行中に変更される可能性はありません。 – Pete
私はテストしませんでしたが、古いCompact Frameworkは非世代GCを使用していました。この場合、MaxGenerationは0を返すように文書化されています。 –