GC.AddMemoryPressure(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 o velkém přidělení nespravované paměti, které je třeba vzít v úvahu při plánování uvolňování paměti.
public:
static void AddMemoryPressure(long bytesAllocated);
[System.Security.SecurityCritical]
public static void AddMemoryPressure(long bytesAllocated);
public static void AddMemoryPressure(long bytesAllocated);
[<System.Security.SecurityCritical>]
static member AddMemoryPressure : int64 -> unit
static member AddMemoryPressure : int64 -> unit
Public Shared Sub AddMemoryPressure (bytesAllocated As Long)
Parametry
- bytesAllocated
- Int64
Přírůstkové množství nespravované paměti, která byla přidělena.
- 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.