Sobes.tech
Junior — Middle

Ako mechanizmus zberu odpadkov určuje, že objekt je potrebné odstrániť z pamäte?

sobes.tech AI

Odpoveď od AI

Mechanizmus zberu odpadu (Garbage Collector) určuje, že objekt je potrebné odstrániť z pamäte na základe toho, či je dostupný programu. Ak na objekt už nie sú žiadne aktívne odkazy (teda je nedosiahnuteľný), znamená to, že nie je potrebný a môže byť odstránený.

Hlavný spôsob, ako to určiť, je prejsť graf objektov, začínajúc od koreňových odkazov (napríklad zásobník volaní, statické premenné). Všetky objekty, ku ktorým je možné sa dostať cez odkazy, sa považujú za živé. Objekty, ku ktorým sa nedá dostať, sa považujú za odpad a sú určené na odstránenie.

Príklad zjednodušeného algoritmu:

  • Začnite s koreňovými objektmi.
  • Označte všetky objekty dostupné z nich.
  • Všetky neoznačené objekty sa považujú za odpad.
  • Uvoľnite pamäť obsadenú týmito objektmi.

V Androide (na báze JVM) sa napríklad používa algoritmus označovania a čistenia (Mark-and-Sweep) a ďalšie optimalizácie.