大对象堆和第三代GC对象有什么区别?
请参考: 大对象堆揭秘
从代的角度来看,大对象属于第二代,因为只有进行第二代垃圾回收时才会对其进行回收。
然而,尽管有这种回收关系,但在进行代压缩时可能存在不成立的情况。当对一个代进行回收时,可能还会进行压缩。但是,LOH并没有被压缩,因此不能说发生在第二代对象上的所有事情都会发生在LOH中的对象上。
[Test]
public void large_object_heap_objects_are_reported_as_max_generation()
{
int[] bling = new int[85000 / 4];
int maxGen = GC.MaxGeneration;
int objectGen = GC.GetGeneration(bling);
Assert.AreEqual(maxGen, objectGen, "Large object is at max generation.");
}
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
来实现这一点。 - Lexi Tramel