Sobes.tech
Middle

Čo je zberač odpadu a ako funguje?

sobes.tech AI

Odpoveď od AI

Zberač odpadu (Garbage Collector, GC) je mechanizmus automatického riadenia pamäte, ktorý prideľuje a uvoľňuje pamäť, ktorú program už nepoužíva.

Princíp fungovania:

  1. Pridelenie pamäte: Keď program vytvára objekty, zberač odpadu im prideľuje miesto na halde (heap).
  2. Určenie dostupnosti: Zberač odpadu určuje, ktoré objekty sú dostupné z "koreňov" (root) programu. Koreňe môžu byť lokálne premenné vo vykonávajúcich sa funkciách, statické premenné, odkazy z vlákien a pod.
  3. Zber odpadu: Objekty, ktoré nie sú dostupné z koreňov, sa považujú za "odpad" a ich pamäť môže byť uvoľnená.

Existujú rôzne algoritmy zberu odpadu, napríklad:

  • Mark-and-Sweep (Označenie a čistenie): Zberač prechádza graf dostupných objektov z koreňov, označuje ich. Potom prechádza celú haldu a uvoľňuje pamäť označených objektov.
  • Kopírovanie: Hald je rozdelený na dve časti. Dostupné objekty sa kopírujú z jednej časti do druhej, stará časť sa čistí.
  • Generačný: Objekty sa delia na generácie. Nové objekty patria do mladej generácie, staré do zrelého. Zber odpadu sa vykonáva častejšie v mladej generácii, pretože väčšina objektov má krátku životnosť.

Príklad v Jave (zjednodušený):

// Program vytvára objekty na halde
Object obj1 = new Object();
Object obj2 = new Object();

// obj1 sa stáva nedostupným
obj1 = null;

// Zberač odpadu môže uvoľniť pamäť obsadenú obj1