我在.NET中读到了CLR:
当CLR加载堆时,在SOH和LOH中进行分区。
当应用程序启动时,CLR会根据应用程序的大小将堆分配给应用程序。
LOH堆有Gen0,Gen1和Gen2区域。
此处A类的所有对象都在Gen0上分配,
问题
假设CLR为 Gen0 区域分配了4K堆内存。鉴于下面的代码,这个单线程是否可以在Gen0上使用完整的4K内存?
collect = new List();
while(true)
{
collect.Add(new A());
new A();
new A();
}
class A
{
int a = 0, b = 0;
}
答案 0 :(得分:1)
Gen0
。但有人提到,如果Gen1
已满,GC会执行垃圾收集以清理Gen0
,如果它仍然已满,则所有新对象都将在Gen0
中创建。