GCSettings.LargeObjectHeapCompactionMode 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置指示完全阻止垃圾回收是否压缩大型对象堆 (LOH) 的值。
public:
static property System::Runtime::GCLargeObjectHeapCompactionMode LargeObjectHeapCompactionMode { System::Runtime::GCLargeObjectHeapCompactionMode get(); void set(System::Runtime::GCLargeObjectHeapCompactionMode value); };
public static System.Runtime.GCLargeObjectHeapCompactionMode LargeObjectHeapCompactionMode { get; [System.Security.SecurityCritical] set; }
public static System.Runtime.GCLargeObjectHeapCompactionMode LargeObjectHeapCompactionMode { get; set; }
[<set: System.Security.SecurityCritical>]
static member LargeObjectHeapCompactionMode : System.Runtime.GCLargeObjectHeapCompactionMode with get, set
static member LargeObjectHeapCompactionMode : System.Runtime.GCLargeObjectHeapCompactionMode with get, set
Public Shared Property LargeObjectHeapCompactionMode As GCLargeObjectHeapCompactionMode
属性值
指示完全阻止垃圾回收是否压缩 LOH 的枚举值之一。
- 属性
注解
LOH 用于为需要超过 85,000 字节的大型对象(例如数组) )分配内存 (。 由于复制大型内存块的性能影响,垃圾回收器通常会扫描 LOH,这涉及到创建死对象占用的内存位置列表,这些位置可以重复使用以满足将来为大型对象分配内存的请求。 但是,在广泛使用 LOH 来存储暂时性对象的应用中,内存碎片也可能对性能产生负面影响。 在这种情况下,可以使用 LargeObjectHeapCompactionMode 属性来压缩,而不是在垃圾回收过程中简单地扫描 LOH。
属性的 LargeObjectHeapCompactionMode 默认值为 GCLargeObjectHeapCompactionMode.Default,指示在垃圾回收期间未压缩 LOH。 如果将属性赋值 GCLargeObjectHeapCompactionMode.CompactOnce为 ,则 LOH 将在下一次完全阻止垃圾回收期间压缩,并将属性值重置为 GCLargeObjectHeapCompactionMode.Default。
注意
后台垃圾回收不会阻止。 这意味着,如果将 属性设置为 LargeObjectHeapCompactionModeGCLargeObjectHeapCompactionMode.CompactOnce,则随后发生的任何后台第 2 代集合都不会压缩 LOH。 只有第一个阻塞第 2 代集合会压缩 LOH。
将 LargeObjectHeapCompactionMode 属性设置为 GCLargeObjectHeapCompactionMode.CompactOnce后,下一个完全阻塞垃圾回收 (和压缩 LOH) 在不确定的未来时间发生。 可以使用如下所示的代码立即压缩 LOH:
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect();
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce
GC.Collect()