Freigeben über


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

Eigenschaftswert

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 erfordern. Aufgrund der Auswirkungen des Kopierens großer Speicherblöcke auf die Leistung führt der Garbage Collector in der Regel einen Sweep des LOH durch. Dabei wird eine Liste der Speicherspeicherorte erstellt, die von toten Objekten belegt wurden und wiederverwendet werden können, um zukünftige Anforderungen für die Speicherbelegung für große Objekte zu erfüllen. In Apps, die den LOH zum Speichern vorübergehender Objekte umfassend nutzen, kann sich die Speicherfragmentierung jedoch auch negativ auf die Leistung auswirken. In diesem Fall ist es möglich, die LargeObjectHeapCompactionMode -Eigenschaft zum Komprimieren zu verwenden, anstatt den LOH während einer Garbage Collection einfach zu fegen.

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

Hinweis

Garbage Collections im Hintergrund werden nicht blockiert. Dies bedeutet, dass, wenn Sie die LargeObjectHeapCompactionMode -Eigenschaft auf GCLargeObjectHeapCompactionMode.CompactOncefestlegen, alle anschließend auftretenden Sammlungen der Hintergrundgeneration 2 den LOH nicht komprimieren. Nur die erste blockierende Sammlung der Generation 2 komprimiert den LOH.

Nachdem die LargeObjectHeapCompactionMode -Eigenschaft auf GCLargeObjectHeapCompactionMode.CompactOncefestgelegt wurde, erfolgt die nächste vollständige blockierende Garbage Collection (und Komprimierung des LOH) zu einem unbestimmten zukünftigen 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:

Weitere Informationen