Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In de meeste gevallen kan de garbagecollector de beste tijd bepalen om een verzameling uit te voeren en moet u deze onafhankelijk laten uitvoeren. Er zijn zeldzame situaties waarin een geforceerde verzameling de prestaties van uw toepassing kan verbeteren. In deze gevallen kunt u garbagecollection veroorzaken met behulp van de GC.Collect methode om een garbagecollection af te dwingen.
Gebruik de GC.Collect methode wanneer er een aanzienlijke vermindering is van de hoeveelheid geheugen die op een specifiek punt in de code van uw toepassing wordt gebruikt. Als uw toepassing bijvoorbeeld gebruikmaakt van een complex dialoogvenster met verschillende besturingselementen, kan het aanroepen Collect wanneer het dialoogvenster wordt gesloten de prestaties verbeteren door het geheugen dat door het dialoogvenster wordt gebruikt, onmiddellijk vrij te maken. Zorg ervoor dat uw toepassing niet te vaak garbage collection veroorzaakt, omdat dat de prestaties kan verminderen als de garbage collector objecten probeert vrij te maken op niet-optimale momenten. U kunt een GCCollectionMode.Optimized opsommingswaarde opgeven voor de Collect methode die alleen moet worden verzameld wanneer de verzameling productief is, zoals beschreven in de volgende sectie.
GC-verzamelingsmodus
U kunt een van de overbelastingen van de GC.Collect methode gebruiken die een GCCollectionMode waarde bevat om het gedrag voor een geforceerde verzameling als volgt op te geven.
GCCollectionMode waarde |
Beschrijving |
|---|---|
| Default | Hiermee wordt de standaardinstelling voor garbagecollection gebruikt voor de actieve versie van .NET. |
| Forced | Dwingt vuilnisophaling om onmiddellijk plaats te vinden. Dit komt overeen met het aanroepen van de GC.Collect() overbelasting. Het resulteert in een volledige blokkerende verzameling van alle generaties. U kunt de grote object-heap ook comprimeren door de GCSettings.LargeObjectHeapCompactionMode eigenschap in te stellen op GCLargeObjectHeapCompactionMode.CompactOnce voordat u een onmiddellijke volledige blokkerende garbage collectie afdwingt. |
| Optimized | Hiermee kan de garbagecollector bepalen of de huidige tijd optimaal is om objecten vrij te maken. De garbagecollector kan bepalen dat een verzameling niet productief genoeg zou zijn om te worden gerechtvaardigd. In dat geval wordt deze geretourneerd zonder objecten vrij te maken. |
Achtergrond- of blokkerende verzamelingen
U kunt de overbelasting van de GC.Collect(Int32, GCCollectionMode, Boolean) methode aanroepen om op te geven of een geïnduceerde verzameling wordt geblokkeerd of niet. Het type verzameling dat wordt uitgevoerd, is afhankelijk van een combinatie van de methode mode en blocking parameters.
mode is lid van de GCCollectionMode opsomming en blocking is een Boolean waarde. De volgende tabel bevat een overzicht van de interactie van de mode en blocking argumenten.
mode |
blocking = true |
blocking = false |
|---|---|---|
| Forced of Default | Er wordt zo snel mogelijk een blokkerende verzameling uitgevoerd. Als een achtergrondverzameling bezig is en de generatie 0 of 1 is, activeert de Collect(Int32, GCCollectionMode, Boolean)-methode onmiddellijk een blokkerende verzameling en geeft het resultaat terug wanneer de verzameling is voltooid. Als een achtergrondverzameling wordt uitgevoerd en de generation parameter 2 is, wacht de methode totdat de achtergrondverzameling is voltooid, wordt een blokkerende verzameling van de tweede generatie geactiveerd en vervolgens geretourneerd. |
Er wordt zo snel mogelijk een inzameling uitgevoerd. De Collect(Int32, GCCollectionMode, Boolean) methode vraagt een achtergrondverzameling aan, maar dit is niet gegarandeerd. Afhankelijk van de omstandigheden kan een blokkerende verzameling nog steeds worden uitgevoerd. Als er al een achtergrondverzameling bezig is, keert de methode onmiddellijk terug. |
| Optimized | Er kan een blokkeringsverzameling worden uitgevoerd, afhankelijk van de status van de garbage-collector en de generation-parameter. De garbagecollector probeert optimale prestaties te bieden. |
Er kan een verzameling worden uitgevoerd, afhankelijk van de toestand van de vuilnisopruimer. De Collect(Int32, GCCollectionMode, Boolean) methode vraagt een achtergrondverzameling aan, maar dit is niet gegarandeerd. Afhankelijk van de omstandigheden kan een blokkerende verzameling nog steeds worden uitgevoerd. De garbagecollector probeert optimale prestaties te bieden. Als er al een achtergrondverzameling bezig is, keert de methode onmiddellijk terug. |