PassFront
  1. PassFront
  2. База знаний
  3. Производительность в JS

Что такое сборщик мусора (Garbage Collector)

Производительность в JS

Сборщик мусора (Garbage Collector) — это механизм движка JavaScript, автоматически освобождающий память, занятую объектами, до которых больше нельзя добраться из программы.

Принцип достижимости

Объект «жив», если до него можно добраться от корней (глобальный объект, переменные в стеке, замыкания). Недостижимый объект — мусор.

let user = { name: 'Ann' };
user = null; // прежний объект недостижим → будет собран

Алгоритм Mark-and-Sweep

  1. Mark — от корней помечаются достижимые объекты.
  2. Sweep — непомеченные удаляются.

Дополнительно: поколенческая сборка, инкрементальность (короткие паузы), компактизация.

Почему не подсчёт ссылок

Reference counting не справляется с циклами; Mark-and-Sweep их собирает (они недостижимы от корней).

Утечки памяти

  • Забытые таймеры/обработчики.
  • Ссылки в замыканиях, глобальные кеши.

WeakMap/WeakSet — слабые ссылки, не мешают сборке.

Коротко для собеседования

Garbage Collector автоматически освобождает недостижимые объекты по принципу reachability от корней (Mark-and-Sweep с поколениями). Корректно собирает циклы. Утечки — из-за забытых ссылок/таймеров; WeakMap/WeakSet их избегают.

Подробнее: learn.javascript.ru — Сборка мусора

Другие вопросы раздела