GC.RemoveMemoryPressure(Int64) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Informuje środowisko uruchomieniowe, że pamięć niezarządzana została zwolniona i nie trzeba już uwzględniać podczas planowania odzyskiwania pamięci.
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)
Parametry
- bytesAllocated
- Int64
Ilość niezarządzanej pamięci, która została zwolniona.
- Atrybuty
Wyjątki
bytesAllocated wartość jest mniejsza lub równa 0.
— lub —
Na komputerze bytesAllocated 32-bitowym jest większy niż Int32.MaxValue.
Uwagi
Typowym wzorcem wydawania zasobów natywnych jest finalizator typu. Jeśli obiekt zarządzany używa pamięci natywnej, może zwolnić pamięć natywną w finalizatorze. Moduł odśmieceń pamięci wie tylko o pamięci zarządzanej i harmonogramach zbierania na podstawie tej wiedzy. Wyobraź sobie scenariusz, w którym mały obiekt zarządzany jest skojarzony z dużą ilością użycia pamięci natywnej, a ten zarządzany obiekt znajduje się teraz w generacji 2. Gen2 GC może się nie zdarzyć przez jakiś czas, co oznacza, że duża ilość pamięci natywnej nie zostanie wydana do momentu wystąpienia następnej generacji2. Środowisko uruchomieniowe udostępnia AddMemoryPressure metody i RemoveMemoryPressure , które pomogą w tym scenariuszu. Środowisko uruchomieniowe przechowuje wewnętrzny rekord wykorzystania pamięci przez te interfejsy API dodane i usunięte oraz wyzwala 2 GC gen2, jeśli zostanie uznane za produktywne. Nie jest to więc funkcja GC, ale raczej coś, co zapewnia środowisko uruchomieniowe do wyzwalania kontrolerów domeny.
Metody AddMemoryPressure i RemoveMemoryPressure zwiększają wydajność tylko dla typów, które zależą wyłącznie od finalizatorów w celu wydania niezarządzanych zasobów. Nie trzeba używać tych metod w typach, które są zgodne ze wzorcem usuwania, gdzie finalizatory są używane do czyszczenia niezarządzanych zasobów tylko w przypadku, gdy użytkownik typu zapomni wywołać metodę Dispose. Aby uzyskać więcej informacji na temat finalizacji obiektów i wzorca usuwania, zobacz Czyszczenie zasobów niezarządzanych.
W najprostszym wzorcu użycia obiekt zarządzany przydziela niezarządzaną pamięć w konstruktorze i zwalnia go w metodzie Finalize . Wywołaj metodę AddMemoryPressure po przydzieleniu niezarządzanej pamięci i wywołaj metodę RemoveMemoryPressure po jej zwolnieniu.
W bardziej skomplikowanych scenariuszach, w których alokacja niezarządzanej pamięci zmienia się znacząco w okresie istnienia zarządzanego obiektu, można wywołać AddMemoryPressure metody i RemoveMemoryPressure w celu przekazania tych przyrostowych zmian do środowiska uruchomieniowego.
Ostrzeżenie
Należy upewnić się, że usuwasz dokładnie ilość dodanego ciśnienia. Nie można tego zrobić, może negatywnie wpłynąć na wydajność systemu w aplikacjach działających przez długi czas.