Junior
Jak funguje sběrač odpadu v JavaScriptu?
sobes.tech AI
Odpověď od AI
V JavaScriptu pracuje sběrač odpadu automaticky, identifikováním objektů, které již nejsou dostupné z dosažitelných kořenů (globální objekt, aktuální volání funkce atd.) a uvolněním jejich zabrané paměti.
Hlavní mechanismy:
- Počítadlo odkazů: Zastaralá metoda, která počítá počet odkazů na objekt. Paměť je uvolněna, když počet dosáhne nuly. Nevýhoda: neumí zpracovat cyklické odkazy.
- Značení a pročištění: Moderní a nejrozšířenější metoda.
- Značení: Začíná od kořenů, sběrač odpadu rekurzivně prochází graf objektů a označuje všechny dostupné objekty.
- Pročištění: Prochází haldu a odstraňuje všechny objekty, které nebyly označeny jako dostupné.
Výhodou "Značení a pročištění" oproti "Počítadlu odkazů" je, že správně zpracovává cyklické odkazy.
JavaScript engine (například V8 v Chrome) neustále sleduje využití paměti a podle potřeby spouští sběrač odpadu. Vývojář nemůže tento proces přímo řídit, ale může na něj nepřímo ovlivnit tím, že se vyhne zbytečným odkazům a bude spravovat životní cyklus složitých objektů.