Как запускается Garbage Collection?
Производительность в JS
Garbage Collection запускается автоматически движком по эвристикам: когда растёт использование памяти, заполняется область молодых объектов, или в моменты простоя — разработчик его не вызывает вручную.
Автоматический запуск
GC работает автоматически — движок сам решает, когда собирать мусор, на основе эвристик:
По заполнению памяти
Когда область для новых объектов (young generation) заполняется — запускается быстрая сборка молодого поколения (minor GC):
Создаётся много объектов → young generation заполнена → minor GCПо росту использования памяти
Когда общее потребление растёт — может запуститься полная сборка (major GC) старого поколения.
В моменты простоя (idle)
V8 использует idle-time GC — собирает мусор, когда основной поток свободен (между кадрами), чтобы не мешать работе.
Поколенческий подход (V8)
- Minor GC (Scavenge) — часто, быстро, для молодых объектов (большинство живут недолго).
- Major GC (Mark-Sweep-Compact) — реже, для старого поколения, полнее.
Инкрементальность
Работа разбивается на порции, чтобы паузы были короткими (не блокировать поток надолго).
Нельзя вызвать вручную
В браузере нет API для принудительного GC (в Node — флаг --expose-gc и global.gc() для отладки). Разработчик влияет косвенно — убирая ссылки.
Коротко для собеседования
GC запускается автоматически движком по эвристикам: при заполнении области молодых объектов (minor GC — часто, быстро), при росте общей памяти (major GC — реже, полнее) и в моменты простоя (idle-time GC, чтобы не блокировать поток). Работа инкрементальна (короткие паузы). Вручную вызвать нельзя (в браузере нет API); влияют убиранием ссылок.