Sobes.tech
Middle

Ce este un colector de gunoi și cum funcționează?

sobes.tech AI

Răspuns de la AI

Colectorul de gunoi (Garbage Collector, GC) este un mecanism de gestionare automată a memoriei, care alocă și eliberează memoria care nu mai este utilizată de program.

Principiul de funcționare:

  1. Alocarea memoriei: Când un program creează obiecte, colectorul de gunoi le alocă spațiu în heap.
  2. Determinarea accesibilității: Colectorul de gunoi determină care obiecte sunt accesibile din "rădăcini" (root) ale programului. Rădăcinile pot fi variabile locale în funcții în execuție, variabile statice, referințe din fire de execuție etc.
  3. Colectarea gunoiului: Obiectele inaccesibile din rădăcini sunt considerate "gunoi" și memoria lor poate fi eliberată.

Există diferite algoritmi de colectare a gunoiului, de exemplu:

  • Marcare și ștergere (Mark-and-Sweep): Colectorul parcurge graful obiectelor accesibile din rădăcini, marcându-le. Apoi parcurge întregul heap și eliberează memoria obiectelor marcate.
  • Copiere: Heap-ul este împărțit în două părți. Obiectele accesibile sunt copiate dintr-o parte în alta, iar partea veche este curățată.
  • Generațional: Obiectele sunt împărțite în generații. Obiectele noi intră în generația tânără, cele vechi în cea matură. Colectarea gunoiului are loc mai frecvent în generația tânără, deoarece majoritatea obiectelor au o durată de viață scurtă.

Exemplu de funcționare în Java (simplificat):

// Programul creează obiecte în heap
Object obj1 = new Object();
Object obj2 = new Object();

// obj1 devine inaccesibil
obj1 = null;

// Colectorul de gunoi poate elibera memoria ocupată de obj1