Что такое сборщик мусора (Garbage Collector)
Производительность в JS
Сборщик мусора (Garbage Collector) — это механизм движка JavaScript, автоматически освобождающий память, занятую объектами, до которых больше нельзя добраться из программы.
Принцип достижимости
Объект «жив», если до него можно добраться от корней (глобальный объект, переменные в стеке, замыкания). Недостижимый объект — мусор.
let user = { name: 'Ann' };
user = null; // прежний объект недостижим → будет собранАлгоритм Mark-and-Sweep
- Mark — от корней помечаются достижимые объекты.
- Sweep — непомеченные удаляются.
Дополнительно: поколенческая сборка, инкрементальность (короткие паузы), компактизация.
Почему не подсчёт ссылок
Reference counting не справляется с циклами; Mark-and-Sweep их собирает (они недостижимы от корней).
Утечки памяти
- Забытые таймеры/обработчики.
- Ссылки в замыканиях, глобальные кеши.
WeakMap/WeakSet — слабые ссылки, не мешают сборке.
Коротко для собеседования
Garbage Collector автоматически освобождает недостижимые объекты по принципу reachability от корней (Mark-and-Sweep с поколениями). Корректно собирает циклы. Утечки — из-за забытых ссылок/таймеров; WeakMap/WeakSet их избегают.
Подробнее: learn.javascript.ru — Сборка мусора