Sobes.tech
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.
    1. Značení: Začíná od kořenů, sběrač odpadu rekurzivně prochází graf objektů a označuje všechny dostupné objekty.
    2. 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ů.