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。
注意
背景垃圾收集不會封鎖。 這表示,如果您將 LargeObjectHeapCompactionMode 屬性設定為 GCLargeObjectHeapCompactionMode.CompactOnce,則後續發生的任何背景第 2 代集合都不會壓縮 LOH。 只有第一個封鎖第 2 代集合會壓縮 LOH。
將 LargeObjectHeapCompactionMode 屬性設定為 GCLargeObjectHeapCompactionMode.CompactOnce之後,下一個完整封鎖垃圾收集 (並壓縮LOH) 會在不確定的未來時間發生。 您可以使用如下所示的程式代碼立即壓縮 LOH:
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect();
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce
GC.Collect()