4

インタビュー中に、第2世代のガベージコレクターに自動的に割り当てられるオブジェクトがあるかどうか尋ねられましたが、何に答えればよいかわかりませんでした。

これは可能ですか?

たぶん、オブジェクトがゼロ世代または第1世代に保持されるのに十分な大きさである場合はどうでしょうか。

4

1 に答える 1

7

新しく割り当てられたオブジェクトは、新世代のオブジェクトを形成し、大きなオブジェクトでない限り、暗黙的に第0世代のコレクションになります。ただし、大きなオブジェクトの場合は、第2世代のコレクションの大きなオブジェクトヒープに配置されます。

(リンク:ガベージコレクションの基礎

そうです、大きなオブジェクトは自動的に第2世代に移行します。

オブジェクトはいつ大きいと見なされますか?

Microsoft®.NETFramework1.1および2.0では、オブジェクトが85,000バイト以上の場合、大きなオブジェクトと見なされます。この数は、パフォーマンス調整の結果として決定されました。オブジェクト割り当て要求が着信し、そのサイズのしきい値を満たすと、ラージオブジェクトヒープに割り当てられます。これは正確にはどういう意味ですか?これを理解するには、.NETガベージコレクタに関するいくつかの基本を説明することが有益な場合があります。

(リンク:CLR Inside Out:Large Object Heap Uncovered

于 2012-05-08T15:08:11.540 に答える