GC.AddMemoryPressure(Int64) Metod

Definition

Informerar körningen av en stor allokering av ohanterat minne som bör beaktas vid schemaläggning av skräpinsamling.

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)

Parametrar

bytesAllocated
Int64

Den inkrementella mängden ohanterat minne som har allokerats.

Attribut

Undantag

bytesAllocated är mindre än eller lika med 0.

-eller-

På en 32-bitars dator bytesAllocated är större än Int32.MaxValue.

Kommentarer

Det vanliga mönstret för att frigöra inbyggda resurser är via en typs finalizer. Om ett hanterat objekt använder inbyggt minne kan det frigöra det interna minnet i sin slutversion. Skräpinsamlaren känner bara till hanterat minne och schemalägger samlingar baserat på den här kunskapen. Föreställ dig ett scenario där ett litet hanterat objekt är associerat med en stor mängd intern minnesanvändning och det hanterade objektet nu finns i gen2. En gen2-GC kanske inte inträffar under en viss tid, vilket innebär att den stora mängden inbyggt minne inte släpps förrän nästa gen2 inträffar. Körningen AddMemoryPressure innehåller metoderna och RemoveMemoryPressure för att hjälpa till med det här scenariot. Körningen behåller en intern post över hur mycket minnestryck dessa API:er har lagt till och tagit bort, och utlöser en gen2-GC om den bedöms vara produktiv. Så detta är inte en funktion i GC utan snarare något som körningen ger för att utlösa GCs.

Metoderna AddMemoryPressure och RemoveMemoryPressure förbättrar endast prestanda för typer som uteslutande är beroende av slutförare för att frigöra ohanterade resurser. Det är inte nödvändigt att använda dessa metoder i typer som följer mönstret för bortskaffande, där slutförarna endast används för att rensa ohanterade resurser om en konsument av typen glömmer att anropa Dispose. Mer information om objektslutsättning och mönstret för rensning finns i Rensa ohanterade resurser.

I det enklaste användningsmönstret allokerar ett hanterat objekt ohanterat minne i konstruktorn och släpper det i Finalize -metoden. AddMemoryPressure Anropa metoden när du har allokerat det ohanterade minnet och anropa metoden när den RemoveMemoryPressure har släppts.

I mer komplicerade scenarier, där den ohanterade minnesallokeringen ändras avsevärt under livslängden för det hanterade objektet, kan du anropa AddMemoryPressure metoderna och RemoveMemoryPressure för att kommunicera dessa inkrementella ändringar i körningen.

Caution

Du måste se till att du tar bort exakt den mängd tryck som du lägger till. Om du inte gör det kan det påverka systemets prestanda negativt i program som körs under långa tidsperioder.

Gäller för