2012-05-08 11 views
4

インタビュー中に、第2世代のガベージコレクタに自動的に割り当てられるオブジェクトが存在する可能性があるかどうかを尋ねられました。オブジェクトを自動的に第2世代のGCに割り当てることができますか?

これは可能ですか?

オブジェクトがゼロまたは第1世代に保持できるほど大きい場合は、

+0

私の知る限りの世代の実装は保証されません! 3世代以上が存在する可能性があり、オブジェクトの宣伝方法は実装の詳細にすぎません。古いWindows Mobileの携帯電話は1世代を持っていた! – CodingBarfield

答えて

7

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

(リンク:Fundamentals of Garbage Collection

はそうです、大きなオブジェクトが自動的に作成2.

オブジェクトが考えられているに行きますか?

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

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

+0

ええ、私はMSDNをもっと頻繁に訪れるべきです:)ありがとう! – ieaglle

関連する問題