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.
- Označenie: Začínajúc od koreňov, zberač odpadkov rekurzívne prechádza graf objektov a označuje všetky dostupné objekty.
- Č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.