Sobes.tech
Junior

Ako funguje zberač odpadkov v JavaScripte?

sobes.tech AI

Odpoveď od AI

V JavaScripte funguje zberač odpadkov automaticky, identifikovaním objektov, ktoré už nie sú dostupné z dostupných koreňov (globálny objekt, aktuálny volaný funkčný rámec atď.) a uvoľnením ich obsadenej pamäte.

Hlavné mechanizmy:

  • Počítadlo odkazov: Zastaralá metóda, ktorá počíta počet odkazov na objekt. Pamäť sa uvoľní, keď počet dosiahne nulu. Nevýhoda: nedokáže spracovať cyklické odkazy.
  • Označenie a čistenie: Moderná a najrozšírenejšia metóda.
    1. Označenie: Začínajúc od koreňov, zberač odpadkov rekurzívne prechádza graf objektov a označuje všetky dostupné objekty.
    2. Čistenie: Prechádza haldu a odstraňuje všetky objekty, ktoré neboli označené ako dostupné.

Výhodou "Označenia a čistenia" oproti "Počítadlu odkazov" je, že správne spracováva cyklické odkazy.

JavaScript engine (napríklad V8 v Chrome) neustále sleduje využitie pamäte a podľa potreby spúšťa zberač odpadkov. Vývojár nemôže tento proces priamo riadiť, ale môže naň nepriamo vplývať tým, že sa vyhne zbytočným odkazom a spravuje životný cyklus zložitých objektov.