GC.RemoveMemoryPressure(Int64) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Informuje modul runtime, že byla vydána nespravovaná paměť a při plánování uvolňování paměti už není nutné brát v úvahu.
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
Množství nespravované paměti, která byla vydána.
- Atributy
Výjimky
bytesAllocated je menší než nebo rovno 0.
nebo
Na 32bitovém počítači bytesAllocated je větší než Int32.MaxValue.
Poznámky
Běžným vzorem pro vydávání nativních prostředků je finalizátor typu. Pokud spravovaný objekt používá nativní paměť, může tuto nativní paměť uvolnit v finalizátoru. Uvolňování paměti ví pouze o spravované paměti a plánuje kolekce na základě těchto znalostí. Představte si scénář, ve kterém je malý spravovaný objekt přidružený k velkému množství nativního využití paměti a tento spravovaný objekt teď žije v Gen2. Uvolňování paměti Gen2 nemusí nějakou dobu proběhnout, což znamená, že až do příštího gen2 nedojde k vydání velkého množství nativní paměti. Modul runtime poskytuje a AddMemoryPressureRemoveMemoryPressure metody, které vám s tímto scénářem pomůžou. Modul runtime uchovává interní záznam o tom, kolik paměti tato rozhraní API přidala a odebrala, a pokud se považuje za produktivní, aktivuje GC gen2. Nejedná se tedy o funkci GC, ale spíše o něco, co modul runtime poskytuje pro aktivaci GCS.
Tyto AddMemoryPressure metody RemoveMemoryPressure zlepšují výkon pouze pro typy, které jsou závislé výhradně na finalizačních metodách, aby se uvolnily nespravované prostředky. Tyto metody není nutné používat v typech, které se řídí vzorem Dispose, kde finalizační metody slouží k vyčištění nespravovaných prostředků pouze v případě, že příjemce typu zapomene volat Dispose. Další informace o finalizaci objektů a vzoru dispose naleznete v tématu Čištění nespravovaných prostředků.
V nejjednodušším vzoru použití přidělí spravovaný objekt nespravovanou paměť v konstruktoru a uvolní ji v Finalize metodě.
AddMemoryPressure Volání metody po přidělení nespravované paměti a volání RemoveMemoryPressure metody po uvolnění.
V složitějších scénářích, kdy se nespravované přidělení paměti podstatně změní během životnosti spravovaného objektu, můžete volat AddMemoryPressure metody a RemoveMemoryPressure informovat tyto přírůstkové změny modulu runtime.
Upozornění
Musíte zajistit, že odeberete přesně množství tlaku, který přidáte. Pokud to neuděláte, může to nepříznivě ovlivnit výkon systému v aplikacích, které běží po dlouhou dobu.