.NETのCLRについて次のように読みました。
CLRがロードされると、ヒープはSOHとLOHに分割されます。
その時点でアプリケーションが開始されると、ヒープはそのサイズに応じてCLRによってアプリケーションに割り当てられます。
LOHヒープには、Gen0、Gen1、およびGen2リージョンがあります。
ここでは、AクラスのすべてのオブジェクトがGen0に割り当てられています。
質問
- CLRは、ヒープ内のアプリケーションが占めるサイズをどのように認識しますか?
Gen0領域にCLRによって割り当てられた4Kヒープメモリがあるとします。以下のコードを考えると、このシングルスレッドがGen0でフル4Kメモリを使用することは可能ですか?
collect = new List(); while(true) { collect.Add(new A()); new A(); new A(); } class A { int a = 0, b = 0; }