大对象堆压缩的默认策略

Default strategy for large object heap compaction

默认情况下,.NET 框架使用什么策略来压缩大对象堆?

持有什么?如果"after a while",有没有关于"how long"或"when"的一些细节?

(我对 .NET Framework 4.5 以上版本感兴趣)

默认情况下,根本不压缩 LOH。因为那可能很昂贵。

从 4.5.1 开始,您可以使用 GCSettings 来更改它。选项是 CompactOnce 和 Never。

因此您可以 manually trigger 由您的应用程序逻辑驱动的压缩。

LOH 仅在第 2 代收集期间收集(清除)。这可能会使您 "after a while" 感到困惑。但是收集不是压缩。