首先,什么大小被认为是大?有没有办法确定堆中对象的大小?
.Net 4.5.1附带了LargeObjectHeapCompactionMode
:
将LargeObjectHeapCompactionMode属性设置为GCLargeObjectHeapCompactionMode.CompactOnce后,下一次完全阻塞的垃圾回收(和LOH压缩)将在不确定的未来时间发生。您可以使用以下代码立即压缩LOH:
根据我的了解,紧缩LOH是一件坏事!那么哪个更糟糕?紧缩LOH还是LOH碎片化?
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce; GC.Collect();