intermediate

Сборка мусора

Достижимость, корни, модель mark-and-sweep, ограничения finalization и давление на память.

JavaScript использует автоматическое управление памятью. Коллекторы освобождают объекты, недостижимые от корней (глобальный объект, текущий stack, замыкания в области видимости).

Если остаётся любой путь ссылки — замыкание, кэш, listener, таймер, DOM-узел, global — объект жив. Присвоение `null` локальной переменной редко чинит утечку, если другой путь удерживает объект.

`FinalizationRegistry` — ненадёжный механизм бизнес-cleanup.

На интервью объясняйте концепцию на конкретном примере и называйте поведение рантайма, которое проверяют.

Типовые ошибки: путать похожие API и забывать edge cases в live coding.

Компромисс часто между ясностью и производительностью или между безопасностью и удобством.

Чеклист:

  • Рассуждайте от корней и достижимости.
  • Ищите удерживающие ссылки в DevTools.
  • Очищайте listeners и таймеры при teardown.