Распространенные причины:
- Глобальные переменные
- Невыпущенные прослушиватели событий
- Замыкания, сохраняющие ссылки
- Неполная очистка потока
Обнаружение:
process.memoryUsage()
- Снимки кучи в Chrome DevTools
- Инструменты:
clinic.js
,
heapdump
,
0x
Профилактика:
- Очистите слушателей и таймеры.
- Используйте WeakMap для ссылок на временные объекты.
- Контролируйте использование памяти и вызывайте оповещения.
Итог
Ключевой вывод для интервью: что такое утечки памяти, как их можно обнаружить и предотвратить в продакшене?