Sobes.tech
Middle

Wat is een garbage collector en hoe werkt het?

sobes.tech AI

Antwoord van AI

De Garbage Collector (GC) is een mechanisme voor automatisch geheugenbeheer dat geheugen toewijst en vrijmaakt dat niet meer door het programma wordt gebruikt.

Werking principe:

  1. Geheugen toewijzing: Wanneer een programma objecten creëert, wijst de garbage collector ruimte toe in de heap.
  2. Bepaling van bereikbaarheid: De garbage collector bepaalt welke objecten bereikbaar zijn vanaf de "kernen" (root) van het programma. Kernen kunnen lokale variabelen in actieve functies, statische variabelen, referenties vanuit threads, etc. zijn.
  3. Opruimen van garbage: Objecten die niet bereikbaar zijn vanaf de kernen worden als "rommel" beschouwd en hun geheugen kan worden vrijgemaakt.

Er zijn verschillende algoritmen voor garbage collection, bijvoorbeeld:

  • Mark-and-Sweep (Markeren en vegen): De collector doorloopt de grafiek van bereikbare objecten vanaf de kernen en markeert ze. Vervolgens doorloopt hij de hele heap en maakt het geheugen vrij van gemarkeerde objecten.
  • Kopiëren: De heap wordt in twee delen verdeeld. Bereikbare objecten worden van het ene deel naar het andere gekopieerd, en het oude deel wordt schoongemaakt.
  • Generationeel: Objecten worden in generaties verdeeld. Nieuwe objecten komen in de jonge generatie, oude in de rijpe. Garbage collection gebeurt vaker in de jonge generatie omdat de meeste objecten een korte levensduur hebben.

Voorbeeld in Java (vereenvoudigd):

// Het programma creëert objecten in de heap
Object obj1 = new Object();
Object obj2 = new Object();

// obj1 wordt onbereikbaar
obj1 = null;

// De garbage collector kan het geheugen dat door obj1 wordt gebruikt vrijmaken