Sobes.tech
Junior

Wat is de garbage collector in C#?

sobes.tech AI

Antwoord van AI

Automatisch geheugenbeheermechanisme dat het geheugen vrijmaakt dat door objecten wordt ingenomen, waaraan niet langer referenties zijn. Dit voorkomt geheugenlekken en vereenvoudigt het ontwikkelproces.

Principes van werking van de garbage collector:

  1. Objecttracking: Identificeert objecten die nog toegankelijk zijn vanaf de root-knooppunten (statische velden, lokale variabelen op de stack).
  2. Opruiming: Als er geen referenties meer naar een object zijn, markeert de garbage collector het voor verwijdering.
  3. Vrijmaken van geheugen: Maakt het geheugen vrij dat door verwijderde objecten wordt ingenomen en comprimeert de resterende geheugenruimte om fragmentatie te verminderen.

Objectgeneraties:

  • Generatie 0: Bevat recent gemaakte, kortlevende objecten. De verzameling gebeurt vaak.
  • Generatie 1: Bevat objecten die een verzameling van generatie 0 hebben overleefd. De verzameling gebeurt minder vaak.
  • Generatie 2: Bevat langdurige objecten. De verzameling gebeurt zelden.

Gedwongen GC-aanroep (zelden en voorzichtig):

// Gedwongen oproep tot garbage collection
System.GC.Collect();
// Wachten tot finalisatoren klaar zijn
System.GC.WaitForPendingFinalizers();

Het hoofdmechanisme van garbage collection in .NET is het markeer- en comprimeringsalgoritme.