intermediate

Утечки памяти, WeakMap и WeakSet

Утечки listeners, таймеров, кэшей, detached DOM, удержание в замыканиях и слабые ассоциации.

Утечки возникают, когда данные остаются достижимыми после того, как перестали быть нужны. Типичные причины во frontend: забытые event listeners, intervals, глобальные кэши, detached DOM и замыкания с крупными графами.

Ключи `WeakMap` должны быть объектами; удерживаются слабо и не перечисляются — подходят для metadata, связанной с объектом, без блокировки сборки. `WeakSet` слабо отслеживает принадлежность объектов.

Weak collections не лечат утечки, если значение замыкает ключ или остаётся другая сильная ссылка.

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

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

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

Чеклист:

  • Очищайте ресурсы жизненного цикла.
  • Ограничивайте размер сильных Map.
  • Используйте WeakMap для metadata на объект.