大对象堆和小对象堆之间的区别?

时间:2013-09-09 08:39:36

标签: c# garbage-collection

我想澄清一下CLR管理堆的问题。有2个对象管理堆 - 大对象堆和小对象堆。我知道大小超过85千字节的物体将被放到LOH。 SOH有3代(0,1,2)。 LOH是SOH(第二代对象)的一部分,还是一个独立的堆,其中的对象总是第二代? LOH应该与SOH的第二代对象一起清除?

1 个答案:

答案 0 :(得分:6)

小对象堆具有不时检查的世代。在收集结束时,这个堆是碎片化的,因此需要进行压缩。如果大型物体处于此状态,则碎片整理需要很长时间。因此,他们决定使用另一个堆大对象堆,这将免除这种昂贵的碎片整理操作。

有一本很好的书: ftp://support.red-gate.com/ebooks/under-the-hood-of-net-memory-management-part1.pdf

第55页LOH