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

Как запускается 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); влияют убиранием ссылок.

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