Freigeben über


GC.TryStartNoGCRegion Methode

Definition

Versucht, Garbage Collection während der Ausführung eines kritischen Pfads zu unterbinden.

Überlädt

TryStartNoGCRegion(Int64, Int64, Boolean)

Versucht, Garbage Collection während der Ausführung eines kritischen Pfads zu unterbinden, wenn eine bestimmte Arbeitsspeichermenge für den großen und den kleinen Objektheap verfügbar ist, und steuert die Ausführung einer vollständigen blockierenden Garbage Collection durch den Garbage Collector, wenn nicht genügend Arbeitsspeicher verfügbar ist.

TryStartNoGCRegion(Int64, Int64)

Versucht, Garbage Collection während der Ausführung eines kritischen Pfads zu unterbinden, wenn eine bestimmte Arbeitsspeichermenge für den großen und den kleinen Objektheap verfügbar ist.

TryStartNoGCRegion(Int64, Boolean)

Versucht, Garbage Collection während der Ausführung eines kritischen Pfads zu unterbinden, wenn eine bestimmte Arbeitsspeichermenge verfügbar ist, und steuert die Ausführung einer vollständigen blockierenden Garbage Collection durch den Garbage Collector, wenn nicht genügend Arbeitsspeicher verfügbar ist.

TryStartNoGCRegion(Int64)

Versucht, Garbage Collection während der Ausführung eines kritischen Pfads zu unterbinden, wenn eine bestimmte Arbeitsspeichermenge verfügbar ist.

Hinweise

Wichtig

Sie können keine Aufrufe der TryStartNoGCRegion Methode verschachteln, und Sie sollten die EndNoGCRegion Methode nur aufrufen, wenn sich die Laufzeit derzeit nicht im GC-Bereichslatenzmodus befindet. Mit anderen Worten, Sie sollten nicht mehrmals aufrufen TryStartNoGCRegion (nach dem ersten Methodenaufruf, nachfolgende Aufrufe werden nicht erfolgreich ausgeführt), und Sie sollten nicht erwarten, dass Aufrufe EndNoGCRegion erfolgreich sind, nur weil der erste Aufruf erfolgreich war TryStartNoGCRegion .

TryStartNoGCRegion(Int64, Int64, Boolean)

Versucht, Garbage Collection während der Ausführung eines kritischen Pfads zu unterbinden, wenn eine bestimmte Arbeitsspeichermenge für den großen und den kleinen Objektheap verfügbar ist, und steuert die Ausführung einer vollständigen blockierenden Garbage Collection durch den Garbage Collector, wenn nicht genügend Arbeitsspeicher verfügbar ist.

public:
 static bool TryStartNoGCRegion(long totalSize, long lohSize, bool disallowFullBlockingGC);
public static bool TryStartNoGCRegion (long totalSize, long lohSize, bool disallowFullBlockingGC);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize, long lohSize, bool disallowFullBlockingGC);
static member TryStartNoGCRegion : int64 * int64 * bool -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * int64 * bool -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, lohSize As Long, disallowFullBlockingGC As Boolean) As Boolean

Parameter

totalSize
Int64

Die Arbeitsspeichermenge in Bytes, die ohne Auslösung einer Garbage Collection zugeordnet werden muss. totalSize -lohSize muss kleiner als oder gleich der Größe eines kurzlebigen Segments sein. Informationen zur Größe eines kurzlebigen Segments finden Sie im Abschnitt „Kurzlebige Generationen und Segmente“ im Artikel Grundlagen der Garbage Collection.

lohSize
Int64

Die Anzahl der Bytes in totalSize, die für Zuordnung für großen Objektheap zu verwenden ist.

disallowFullBlockingGC
Boolean

true, um eine vollständige blockierende Garbage Collection zu unterdrücken, wenn der Garbage Collector den für den kleinen und den großen Objektheap angegebenen Arbeitsspeicher nicht zuordnen kann, andernfalls false.

Gibt zurück

Boolean

true, wenn die Laufzeit die erforderliche Arbeitsspeichermenge übergeben kann, und der Garbage Collector in den Latenzmodus ohne GC-Region wechseln kann; andernfalls false.

Attribute

Ausnahmen

totalSize - lohSize überschreitet die Größe des kurzlebigen Segments.

Der Prozess ist bereits im Latenzmodus ohne GC-Region.

Hinweise

Die TryStartNoGCRegion(Int64, Int64, Boolean) Methode versucht, den Garbage Collector ohne GC-Regionslatenzmodus zu platzieren, wodurch die Garbage Collection nicht zulässig ist, während eine App einen kritischen Codebereich ausführt. Wenn die Laufzeit zunächst den angeforderten Arbeitsspeicher nicht zuordnen kann und das disallowFullBlockingGC Argument lautet false, führt der Garbage Collector eine vollständige Blockierung der Garbage Collection aus, um zusätzlichen Arbeitsspeicher freizugeben. Andernfalls schlägt die Zuordnung fehl, und die Methode gibt zurück false. Der Garbage Collector gibt keinen GC-Bereichslatenzmodus ein, wenn er den LOH und totalSize - lohSize den kleinen Objekt-Heap (SOH) zuordnen lohSize kann.

lohSize muss groß genug sein, um alle Speicherzuweisungen zu behandeln, die im kritischen Pfad für den LOH auftreten, und totalSize - lohSize muss groß genug sein, um alle Speicherzuweisungen zu behandeln, die im kritischen Pfad für das SOH auftreten. Dazu gehören Zuweisungen der App sowie Zuteilungen, die die Laufzeit im Auftrag der App durchführt.

Einstellung disallowFullBlockingGC , um true eine vollständige Blockierung der Garbage Collection zu verhindern, wenn nicht genügend Arbeitsspeicher anfänglich verfügbar ist, ist für Lastenausgleichsszenarien am nützlichsten: Ein System kann diese Methode aufrufen und sich selbst als bereit für die Annahme von Anforderungen melden, wenn er zurückgibt true, und die Lastenausgleichs-Umleitungsanforderungen an andere Systeme haben, wenn sie zurückgegeben wird false. Anschließend kann die Garbage Collection vollständig blockiert werden, wenn sie keine Anforderungen verarbeitet, indem Sie die Collect(Int32, GCCollectionMode, Boolean, Boolean) Methode aufrufen.

Wichtig

Sie können keine Aufrufe der TryStartNoGCRegion Methode verschachteln, und Sie sollten die EndNoGCRegion Methode nur aufrufen, wenn sich die Laufzeit derzeit nicht im GC-Bereichslatenzmodus befindet. Mit anderen Worten, Sie sollten nicht mehrmals aufrufen TryStartNoGCRegion (nach dem ersten Methodenaufruf, nachfolgende Aufrufe werden nicht erfolgreich ausgeführt), und Sie sollten nicht erwarten, dass Aufrufe EndNoGCRegion erfolgreich sind, nur weil der erste Aufruf erfolgreich war TryStartNoGCRegion .

Sie beenden den Latenzmodus für keine GC-Regionen, indem Sie die EndNoGCRegion Methode aufrufen.

Siehe auch

Gilt für

TryStartNoGCRegion(Int64, Int64)

Versucht, Garbage Collection während der Ausführung eines kritischen Pfads zu unterbinden, wenn eine bestimmte Arbeitsspeichermenge für den großen und den kleinen Objektheap verfügbar ist.

public:
 static bool TryStartNoGCRegion(long totalSize, long lohSize);
public static bool TryStartNoGCRegion (long totalSize, long lohSize);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize, long lohSize);
static member TryStartNoGCRegion : int64 * int64 -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * int64 -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, lohSize As Long) As Boolean

Parameter

totalSize
Int64

Die Arbeitsspeichermenge in Bytes, die ohne Auslösung einer Garbage Collection zugeordnet werden muss. totalSize -lohSize muss kleiner als oder gleich der Größe eines kurzlebigen Segments sein. Informationen zur Größe eines kurzlebigen Segments finden Sie im Abschnitt „Kurzlebige Generationen und Segmente“ im Artikel Grundlagen der Garbage Collection.

lohSize
Int64

Die Anzahl der Bytes in totalSize, die für Zuordnung für großen Objektheap zu verwenden ist.

Gibt zurück

Boolean

true, wenn die Laufzeit die erforderliche Arbeitsspeichermenge übergeben kann, und der Garbage Collector in den Latenzmodus ohne GC-Region wechseln kann; andernfalls false.

Attribute

Ausnahmen

totalSize - lohSize überschreitet die Größe des kurzlebigen Segments.

Der Prozess ist bereits im Latenzmodus ohne GC-Region.

Hinweise

Die TryStartNoGCRegion(Int64, Int64) Methode versucht, den Garbage Collector ohne GC-Regionslatenzmodus zu platzieren, wodurch die Garbage Collection nicht zulässig ist, während eine App einen kritischen Codebereich ausführt. Wenn die Laufzeit zunächst nicht die angeforderte Speichermenge zuordnen kann, führt der Garbage Collector eine vollständige Blockierung der Garbage Collection durch, um zusätzlichen Arbeitsspeicher freizugeben. Der Garbage Collector gibt keinen GC-Bereichslatenzmodus ein, wenn er den LOH und totalSize - lohSize den kleinen Objekt-Heap (SOH) zuordnen lohSize kann.

lohSize muss groß genug sein, um alle Speicherzuweisungen zu behandeln, die im kritischen Pfad für den LOH auftreten, und totalSize - lohSize muss groß genug sein, um alle Speicherzuweisungen zu behandeln, die im kritischen Pfad für das SOH auftreten. Dazu gehören Zuweisungen der App sowie Zuteilungen, die die Laufzeit im Auftrag der App durchführt.

Wichtig

Sie können keine Aufrufe der TryStartNoGCRegion Methode verschachteln, und Sie sollten die EndNoGCRegion Methode nur aufrufen, wenn sich die Laufzeit derzeit nicht im GC-Bereichslatenzmodus befindet. Mit anderen Worten, Sie sollten nicht mehrmals aufrufen TryStartNoGCRegion (nach dem ersten Methodenaufruf, nachfolgende Aufrufe werden nicht erfolgreich ausgeführt), und Sie sollten nicht erwarten, dass Aufrufe EndNoGCRegion erfolgreich sind, nur weil der erste Aufruf erfolgreich war TryStartNoGCRegion .

Sie beenden den Latenzmodus für keine GC-Regionen, indem Sie die EndNoGCRegion Methode aufrufen.

Siehe auch

Gilt für

TryStartNoGCRegion(Int64, Boolean)

Versucht, Garbage Collection während der Ausführung eines kritischen Pfads zu unterbinden, wenn eine bestimmte Arbeitsspeichermenge verfügbar ist, und steuert die Ausführung einer vollständigen blockierenden Garbage Collection durch den Garbage Collector, wenn nicht genügend Arbeitsspeicher verfügbar ist.

public:
 static bool TryStartNoGCRegion(long totalSize, bool disallowFullBlockingGC);
public static bool TryStartNoGCRegion (long totalSize, bool disallowFullBlockingGC);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize, bool disallowFullBlockingGC);
static member TryStartNoGCRegion : int64 * bool -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * bool -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, disallowFullBlockingGC As Boolean) As Boolean

Parameter

totalSize
Int64

Die Arbeitsspeichermenge in Bytes, die ohne Auslösung einer Garbage Collection zugeordnet werden muss. Diese muss kleiner als oder gleich der Größe eines kurzlebigen Segments sein. Informationen zur Größe eines kurzlebigen Segments finden Sie im Abschnitt „Kurzlebige Generationen und Segmente“ im Artikel Grundlagen der Garbage Collection.

disallowFullBlockingGC
Boolean

true, um eine vollständige blockierende Garbage Collection zu unterdrücken, wenn der Garbage Collector die totalSize-Bytes nicht zuordnen kann, andernfalls false.

Gibt zurück

Boolean

true, wenn die Laufzeit die erforderliche Arbeitsspeichermenge übergeben kann, und der Garbage Collector in den Latenzmodus ohne GC-Region wechseln kann; andernfalls false.

Attribute

Ausnahmen

totalSize überschreitet die Größe des kurzlebigen Segments.

Der Prozess ist bereits im Latenzmodus ohne GC-Region.

Hinweise

Die TryStartNoGCRegion(Int64, Boolean) Methode versucht, den Garbage Collector ohne GC-Regionslatenzmodus zu platzieren, wodurch die Garbage Collection nicht zulässig ist, während eine App einen kritischen Codebereich ausführt. Wenn die Laufzeit zunächst den angeforderten Arbeitsspeicher nicht zuordnen kann und das disallowFullBlockingGC Argument lautet false, führt der Garbage Collector eine vollständige Blockierung der Garbage Collection aus, um zusätzlichen Arbeitsspeicher freizugeben. Andernfalls schlägt die Zuordnung fehl, und die Methode gibt zurück false. Der Garbage Collector gibt keinen GC-Bereichslatenzmodus ein, wenn er die erforderliche Speichermenge zuordnen kann, was in diesem Fall tatsächlich 2 * totalSize ist (es versucht, den kleinen Objekt-Heap und totalSize den großen Objekt-Heap zuzuweisentotalSize).

totalSize muss groß genug sein, um alle Speicherzuweisungen zu behandeln, die im kritischen Pfad auftreten. Dazu gehören Zuweisungen der App sowie Zuteilungen, die die Laufzeit im Auftrag der App durchführt.

Einstellung disallowFullBlockingGC , um true eine vollständige Blockierung der Garbage Collection zu verhindern, wenn nicht genügend Arbeitsspeicher anfänglich verfügbar ist, ist für Lastenausgleichsszenarien am nützlichsten: Ein System kann diese Methode aufrufen und sich selbst als bereit für die Annahme von Anforderungen melden, wenn er zurückgibt true, und die Lastenausgleichs-Umleitungsanforderungen an andere Systeme haben, wenn sie zurückgegeben wird false. Anschließend kann die Garbage Collection vollständig blockiert werden, wenn sie keine Anforderungen verarbeitet, indem Sie die Collect(Int32, GCCollectionMode, Boolean, Boolean) Methode aufrufen.

Wichtig

Sie können keine Aufrufe der TryStartNoGCRegion Methode verschachteln, und Sie sollten die EndNoGCRegion Methode nur aufrufen, wenn sich die Laufzeit derzeit nicht im GC-Bereichslatenzmodus befindet. Mit anderen Worten, Sie sollten nicht mehrmals aufrufen TryStartNoGCRegion (nach dem ersten Methodenaufruf, nachfolgende Aufrufe werden nicht erfolgreich ausgeführt), und Sie sollten nicht erwarten, dass Aufrufe EndNoGCRegion erfolgreich sind, nur weil der erste Aufruf erfolgreich war TryStartNoGCRegion .

Sie beenden den Latenzmodus für keine GC-Regionen, indem Sie die EndNoGCRegion Methode aufrufen.

Siehe auch

Gilt für

TryStartNoGCRegion(Int64)

Versucht, Garbage Collection während der Ausführung eines kritischen Pfads zu unterbinden, wenn eine bestimmte Arbeitsspeichermenge verfügbar ist.

public:
 static bool TryStartNoGCRegion(long totalSize);
public static bool TryStartNoGCRegion (long totalSize);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize);
static member TryStartNoGCRegion : int64 -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long) As Boolean

Parameter

totalSize
Int64

Die Arbeitsspeichermenge in Bytes, die ohne Auslösung einer Garbage Collection zugeordnet werden muss. Diese muss kleiner als oder gleich der Größe eines kurzlebigen Segments sein. Informationen zur Größe eines kurzlebigen Segments finden Sie im Abschnitt „Kurzlebige Generationen und Segmente“ im Artikel Grundlagen der Garbage Collection.

Gibt zurück

Boolean

true, wenn die Laufzeit die erforderliche Arbeitsspeichermenge übergeben kann, und der Garbage Collector in den Latenzmodus ohne GC-Region wechseln kann; andernfalls false.

Attribute

Ausnahmen

totalSize überschreitet die Größe des kurzlebigen Segments.

Der Prozess ist bereits im Latenzmodus ohne GC-Region.

Hinweise

Die TryStartNoGCRegion(Int64) Methode versucht, den Garbage Collector ohne GC-Regionslatenzmodus zu platzieren, wodurch die Garbage Collection nicht zulässig ist, während eine App einen kritischen Codebereich ausführt. Wenn die Laufzeit zunächst nicht die angeforderte Speichermenge zuordnen kann, führt der Garbage Collector eine vollständige Blockierung der Garbage Collection durch, um zusätzlichen Arbeitsspeicher freizugeben. Der Garbage Collector gibt keinen GC-Bereichslatenzmodus ein, wenn er die erforderliche Speichermenge zuordnen kann, was in diesem Fall tatsächlich 2 * totalSize Bytes ist (es versucht, Bytes für den heap und totalSize bytes des kleinen Objekts für den großen Objekt-Heap zuzuweisentotalSize).

totalSize muss groß genug sein, um alle Speicherzuweisungen zu behandeln, die im kritischen Pfad auftreten. Dazu gehören Zuweisungen der App sowie Zuteilungen, die die Laufzeit im Auftrag der App durchführt.

Wichtig

Sie können keine Aufrufe der TryStartNoGCRegion Methode verschachteln, und Sie sollten die EndNoGCRegion Methode nur aufrufen, wenn sich die Laufzeit derzeit nicht im GC-Bereichslatenzmodus befindet. Mit anderen Worten, Sie sollten nicht mehrmals aufrufen TryStartNoGCRegion (nach dem ersten Methodenaufruf, nachfolgende Aufrufe werden nicht erfolgreich ausgeführt), und Sie sollten nicht erwarten, dass Aufrufe EndNoGCRegion erfolgreich sind, nur weil der erste Aufruf erfolgreich war TryStartNoGCRegion .

Sie beenden den Latenzmodus für keine GC-Regionen, indem Sie die EndNoGCRegion Methode aufrufen.

Siehe auch

Gilt für