GCSettings.LargeObjectHeapCompactionMode Eigenschaft

Definition

Ruft einen Wert ab oder legt ihn fest, der angibt, ob eine vollständige blockierende Garbage Collection den großen Objektheap (LOH) komprimiert.

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>]
member this.LargeObjectHeapCompactionMode : System.Runtime.GCLargeObjectHeapCompactionMode with get, set
member this.LargeObjectHeapCompactionMode : System.Runtime.GCLargeObjectHeapCompactionMode with get, set
Public Shared Property LargeObjectHeapCompactionMode As GCLargeObjectHeapCompactionMode

Eigenschaftswert

GCLargeObjectHeapCompactionMode

Einer der Enumerationswerte, der angibt, ob eine vollständige blockierende Garbage Collection das LOH komprimiert.

Attribute

Hinweise

Der LOH wird zum Zuweisen von Arbeitsspeicher für große Objekte (z. B. Arrays) verwendet, die mehr als 85.000 Bytes benötigen. Aufgrund der Auswirkungen auf die Leistung beim Kopieren großer Speicherblöcke entfernt der Garbage Collector normalerweise den LOH. Dabei wird eine Liste der Speicherspeicherorte erstellt, die von unzuverwendenden Objekten belegt wurden und wiederverwendet werden können, um zukünftige Anforderungen zur Speicherbelegung für große Objekte zu erfüllen. In Apps, die den LOH in großem Umfang zum Speichern vorübergehender Objekte verwenden, kann sich die Speicherfragmentierung jedoch auch negativ auf die Leistung auswirken. In diesem Fall ist es möglich, die LargeObjectHeapCompactionMode -Eigenschaft zum Komprimen zu verwenden, anstatt den LOH während einer Garbage Collection einfach zu bereinigungen.

Der Standardwert der LargeObjectHeapCompactionMode -Eigenschaft ist GCLargeObjectHeapCompactionMode.Default , was angibt, dass der LOH während der Garbage Collections nicht komprimiert wird. Wenn Sie der Eigenschaft den Wert GCLargeObjectHeapCompactionMode.CompactOnce zuweisen, wird der LOH während der nächsten vollständig blockierenden Garbage Collection komprimiert, und der Eigenschaftswert wird auf zurückgesetzt. GCLargeObjectHeapCompactionMode.Default

Hinweis

Garbage Collections im Hintergrund werden nicht blockiert. Wenn Sie die -Eigenschaft auf festlegen, wird der LOH also LargeObjectHeapCompactionMode GCLargeObjectHeapCompactionMode.CompactOnce nicht von allen Auflistungen der Generation 2 im Hintergrund komprimiert, die anschließend auftreten. Nur die erste blockierende Sammlung der Generation 2 komprimiert den LOH.

Nachdem die LargeObjectHeapCompactionMode -Eigenschaft auf festgelegt GCLargeObjectHeapCompactionMode.CompactOnce wurde, erfolgt die nächste vollständige blockierende Garbage Collection (und Komprimierung des LOH) zu einem unbestimmten späteren Zeitpunkt. Sie können den LOH sofort komprimieren, indem Sie Code wie den folgenden verwenden:

GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect();
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce
GC.Collect()

Gilt für

Siehe auch