Как разрулить “Process out of Memory Exception” в Node.js?

Этот вопрос проверяет понимание причин утечки памяти и умение оптимизировать ресурсы для стабильной работы приложения.

Короткий ответ

Ошибка “Process out of Memory” возникает при превышении лимита памяти для процесса Node.js. Решить проблему можно с помощью оптимизации кода, управления памятью и увеличения лимита памяти с флагом --max-old-space-size.

Длинный ответ

Причины возникновения ошибки:

 

 - Утечки памяти — данные сохраняются в памяти, но не освобождаются.

- Обработка больших файлов — загрузка всего файла в память.

- Неэффективные циклы и структуры данных.

  1.  

Шаги для решения:

-  Используйте стримы вместо загрузки больших файлов в память.

const fs = require('fs');

const readStream = fs.createReadStream('largeFile.txt');
readStream.on('data', (chunk) => {
  console.log('Обработан блок данных:', chunk.length);
});

  Увеличьте лимит памяти:
  Запуск процесса с флагом --max-old-space-size увеличит максимальный размер памяти.

node --max-old-space-size=4096 app.js

Здесь 4096 — размер памяти в МБ.

 

Профилируйте память:
Используйте инструменты для поиска утечек памяти, такие как Chrome DevTools или clinic:

npm install -g clinic
clinic doctor -- node app.js

 

Оптимизируйте код:

Избегайте глобальных переменных, которые сохраняются в памяти.

Освобождайте ресурсы, удаляя ненужные объекты.

  •  

Заключение:
“Out of Memory” можно избежать, правильно управляя ресурсами, используя стримы и профилируя память. Увеличение лимита памяти — временное решение, а не оптимизация.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • Node.js

Ключевые слова

Подпишись на Node.js Developer в телеграм