> Как работает сборщик мусора в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Верме, ITFB, Сбер, Арго, SmartWay, ООО Снэп АйТи
Стек: JavaScript
> Пример ответа
Сборщик мусора (Garbage Collector, GC) в JavaScript автоматически освобождает память, которая больше не используется программой. Основной механизм - это алгоритм Mark-and-Sweep (пометить и очистить).
Как это работает:
-
Корневые объекты - сборщик начинает с глобального объекта (
windowв браузере,globalв Node.js), текущего стека вызовов и локальных переменных в функциях. -
Обход графа - GC рекурсивно обходит все ссылки от корней, помечая каждый достижимый объект как "живой".
-
Очистка - все непомеченные объекты считаются недостижимыми и удаляются из памяти.
Важные нюансы:
-
Циклические ссылки - если два объекта ссылаются друг на друга, но недостижимы из корней, они всё равно будут удалены (старые браузеры с устаревшим алгоритмом reference counting могли их не очищать, но современные движки используют mark-and-sweep).
-
Поколенческая сборка (Generational GC) - в V8 (Chrome, Node.js) объекты делятся на "молодое" и "старое" поколения. Молодые объекты проверяются чаще, так как большинство из них быстро умирают.
-
Инкрементальная сборка - чтобы не блокировать выполнение кода, GC работает небольшими порциями, чередуя с выполнением JavaScript.
Пример, когда сборщик не срабатывает (утечка памяти):
JAVASCRIPTfunction createLeak() {const largeArray = new Array(1000000).fill('data');// Если largeArray остаётся в глобальной области или замыкании - память не освободится}
Для предотвращения утечек: обнуляйте ссылки (obj = null), избегайте случайных глобальных переменных, очищайте таймеры и слушатели событий.
> Похожие задачи по frontend
Какие состояния бывают у промисов и какие методы у них есть в JavaScript
В чем отличие массивов от объектов в JavaScript
Как работает Promise.all в JavaScript
Как получить все ключи объекта в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью