Загрузка…
Загрузка…
Node.js · middle · сложность 4
Процесс сбора мусора:
Обнаружение утечки памяти:
Мониторинг процессов: отслеживайте закономерности использования памяти с течением времени с помощью процесса.memoryUsage().
Снимки кучи: используйте Chrome DevTools или модуль heapdump для анализа памяти.
Профилирование памяти: такие инструменты, как Clinic.js, 0x или встроенный флаг --inspect.
Слабые ссылки: используйте WeakMap/WeakSet, чтобы предотвратить непреднамеренное сохранение объектов.
Очистка прослушивателя событий: удалите прослушиватели событий, чтобы предотвратить сохранение закрытия.
Очистка таймера: очистите интервалы и тайм-ауты, чтобы предотвратить сохранение обратных вызовов.
Глобальные переменные: непреднамеренное загрязнение глобальной области видимости.
Замыкания: функции, сохраняющие ссылки на переменные внешней области видимости.
Прослушиватели событий: неудаленные прослушиватели, сохраняющие объекты в памяти.
Циркулярные ссылки: объекты, ссылающиеся друг на друга, препятствуют сбору данных.
Кэш без срока действия: неограниченное количество кэшей, которые растут бесконечно.
Обработка потока: неправильная очистка потока и обработка ошибок.
Стратегии профилактики:
Основной вывод к интервью: как работает сборка мусора в Node.js и как можно диагностировать утечки памяти?