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 für die Zuweisung von Arbeitsspeicher für große Objekte (z. B. Arrays) verwendet, die mehr als 85.000 Bytes benötigen. Aufgrund der Leistungsbeeinträchtigung des Kopierens großer Speicherblöcke übergibt der Garbage Collector normalerweise den LOH, was das Erstellen einer Liste der Speicherspeicherorte umfasst, die von toten Objekten belegt wurden und die wiederverwendet werden können, um zukünftige Anforderungen für die Zuweisung von Arbeitsspeicher für große Objekte zu erfüllen. In Apps, die die 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 die 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 von GCLargeObjectHeapCompactionMode.CompactOncezuweisen, wird die LOH während der nächsten vollständig blockierenden Garbage Collection komprimiert, und der Eigenschaftswert wird auf GCLargeObjectHeapCompactionMode.Defaultzurückgesetzt.

Hinweis

Hintergrundbereinigungssammlungen blockieren nicht. Dies bedeutet, dass, wenn Sie die LargeObjectHeapCompactionMode -Eigenschaft auf GCLargeObjectHeapCompactionMode.CompactOncefestlegen, alle Sammlungen der Hintergrundgeneration 2, die anschließend auftreten, die LOH nicht komprimieren. Nur die erste blockierende Sammlung der 2. Generation kompaktiert den LOH.

Nachdem die LargeObjectHeapCompactionMode -Eigenschaft auf GCLargeObjectHeapCompactionMode.CompactOncefestgelegt wurde, erfolgt die nächste vollständige blockierende Garbage Collection (und Die Komprimierung des LOH) zu einem unbestimmten zukünftigen Zeitpunkt. Sie können die LOH sofort komprimieren, indem Sie Code wie folgt verwenden:

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

Gilt für:

Weitere Informationen