我想澄清一个 CLR 托管堆的问题。有 2 个对象托管堆 - 大对象堆和小对象堆。我知道大小超过 85kbytes 的对象将被放入 LOH。SOH 有 3 代 (0,1,2)。LOH 是 SOH(第 2 代对象)的一部分,还是带有始终是第 2 代对象的单独堆?LOH 应该与 SOH 的第二代对象一起清除吗?
问问题
3424 次
1 回答
6
小对象堆有不时检查的代。在收集结束时,这个堆是碎片的,所以它需要被压缩。如果大对象在这个堆中,那么碎片整理需要很长时间。因此他们决定使用另一个大对象堆来免除这种昂贵的碎片整理操作。
确实有好书: ftp: //support.red-gate.com/ebooks/under-the-hood-of-net-memory-management-part1.pdf
第 55 页
于 2013-09-09T08:48:22.843 回答