GC.RemoveMemoryPressure(Int64) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Informiert die Laufzeit, dass nicht verwalteter Arbeitsspeicher freigegeben wurde und beim Planen der Garbage Collection nicht mehr berücksichtigt werden muss.
public:
static void RemoveMemoryPressure(long bytesAllocated);
[System.Security.SecurityCritical]
public static void RemoveMemoryPressure (long bytesAllocated);
public static void RemoveMemoryPressure (long bytesAllocated);
[<System.Security.SecurityCritical>]
static member RemoveMemoryPressure : int64 -> unit
static member RemoveMemoryPressure : int64 -> unit
Public Shared Sub RemoveMemoryPressure (bytesAllocated As Long)
Parameter
- bytesAllocated
- Int64
Die Menge an nicht verwaltetem Arbeitsspeicher, die freigegeben wurde.
- Attribute
Ausnahmen
bytesAllocated
ist kleiner oder gleich 0.
- oder -
Auf einem 32-Bit-Computer bytesAllocated
ist größer als Int32.MaxValue.
Hinweise
Bei der Bestimmung, wann die Garbage Collection geplant werden soll, berücksichtigt die Laufzeit, wie viel verwalteter Arbeitsspeicher zugeordnet ist. Wenn ein kleines verwaltetes Objekt eine große Menge nicht verwalteten Arbeitsspeichers zuordnet, berücksichtigt die Laufzeit nur den verwalteten Speicher und unterschätzt daher die Dringlichkeit der Planung der Garbage Collection. Die AddMemoryPressure -Methode informiert die Laufzeit über diesen zusätzlichen Druck auf den Systemspeicher, und die RemoveMemoryPressure -Methode informiert die Laufzeit darüber, dass der zusätzliche Druck freigegeben wurde.
Die AddMemoryPressure Methoden und RemoveMemoryPressure verbessern die Leistung nur für Typen, die ausschließlich von Finalizern abhängen, um die nicht verwalteten Ressourcen freizugeben. Es ist nicht erforderlich, diese Methoden in Typen zu verwenden, die dem Dispose-Muster folgen, wobei Finalizer verwendet werden, um nicht verwaltete Ressourcen nur für den Fall zu sauber, dass ein Consumer des Typs den Aufruf Dispose
von vergisst. Weitere Informationen zur Objektabschlusserstellung und zum Dispose-Muster finden Sie unter Bereinigen nicht verwalteter Ressourcen.
Im einfachsten Verwendungsmuster weist ein verwaltetes Objekt nicht verwalteten Arbeitsspeicher im Konstruktor zu und gibt ihn in der Finalize
-Methode frei. Rufen Sie die AddMemoryPressure -Methode nach der Zuweisung des nicht verwalteten Arbeitsspeichers auf, und rufen Sie die RemoveMemoryPressure -Methode auf, nachdem Sie ihn freigegeben haben.
In komplizierteren Szenarien, in denen sich die nicht verwaltete Speicherbelegung während der Lebensdauer des verwalteten Objekts erheblich ändert, können Sie die AddMemoryPressure Methoden und RemoveMemoryPressure aufrufen, um diese inkrementellen Änderungen an die Laufzeit zu kommunizieren.
Achtung
Sie müssen sicherstellen, dass Sie genau den Druck entfernen, den Sie hinzufügen. Andernfalls kann die Leistung des Systems in Anwendungen, die über einen längeren Zeitraum ausgeführt werden, beeinträchtigt werden.