GC.AddMemoryPressure(Int64) Metoda

Definice

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.

Platí pro