GC.RemoveMemoryPressure(Int64) Methode

Definitie

Informeert de runtime dat onbeheerd geheugen is vrijgegeven en dat er geen rekening meer moet worden gehouden bij het plannen van garbagecollection.

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)

Parameters

bytesAllocated
Int64

De hoeveelheid onbeheerd geheugen dat is vrijgegeven.

Kenmerken

Uitzonderingen

bytesAllocated is kleiner dan of gelijk aan 0.

– of –

Op een 32-bits computer bytesAllocated is deze groter dan Int32.MaxValue.

Opmerkingen

Het algemene patroon voor het vrijgeven van systeemeigen resources is via de finalizer van een type. Als een beheerd object systeemeigen geheugen gebruikt, kan het systeemeigen geheugen in de finalizer vrij maken. De garbagecollector weet alleen over beheerd geheugen en plant verzamelingen op basis van deze kennis. Stel dat er een scenario is waarin een klein beheerd object is gekoppeld aan een grote hoeveelheid systeemeigen geheugengebruik en dit beheerde object nu in gen2 wordt gebruikt. Een gen2 GC kan enige tijd niet plaatsvinden, wat betekent dat de grote hoeveelheid systeemeigen geheugen pas wordt vrijgegeven als de volgende gen2 plaatsvindt. De runtime biedt de AddMemoryPressure en RemoveMemoryPressure methoden om u te helpen met dit scenario. De runtime houdt een interne record bij van de hoeveelheid geheugenbelasting die deze API's hebben toegevoegd en verwijderd, en activeert een gen2 GC als ze productief worden geacht. Dit is dus geen functie van de GC, maar iets wat de runtime biedt om GCs te activeren.

De AddMemoryPressure en RemoveMemoryPressure methoden verbeteren alleen de prestaties voor typen die uitsluitend afhankelijk zijn van finalizers om de onbeheerde resources vrij te geven. Het is niet nodig om deze methoden te gebruiken in typen die het verwijderingspatroon volgen, waarbij finalizers worden gebruikt om onbeheerde resources alleen op te schonen in het geval dat een consument van het type vergeet aan te roepen Dispose. Zie Opschonen van niet-beheerde resources voor meer informatie over het voltooien van objecten en het verwijderingspatroon.

In het eenvoudigste gebruikspatroon wijst een beheerd object onbeheerd geheugen toe in de constructor en wordt het in de Finalize methode vrijgegeven. Roep de AddMemoryPressure methode aan na het toewijzen van het onbeheerde geheugen en roep de RemoveMemoryPressure methode aan nadat deze is vrijgegeven.

In complexere scenario's, waarbij de niet-beheerde geheugentoewijzing aanzienlijk verandert tijdens de levensduur van het beheerde object, kunt u de AddMemoryPressure en RemoveMemoryPressure methoden aanroepen om deze incrementele wijzigingen aan de runtime te communiceren.

Caution

U moet ervoor zorgen dat u exact de hoeveelheid druk verwijdert die u toevoegt. Als u dit niet doet, kan dit de prestaties van het systeem nadelig beïnvloeden in toepassingen die gedurende lange tijd worden uitgevoerd.

Van toepassing op