По умолчанию процесс Node.js
расчитывает, что ему доступны аж 1.5 Gb памяти.
Параметр
--max_old_space_size
задаёт максимальный размер т.н. Old Space – части Heap, куда попадают неактивные и не нужные данные. Это, на практике, область, занимающая наибольшую память. Именно её есть смысл ограничить, чтобы процесс Node занимал поменьше памяти.
Но у м
еньшей памяти есть и своя цена: чаще будет запускаться «сбор мусора» (garbage colleciton) – процесс очистки из памяти неиспользуемых данных, к которым более нет ссылок из глобальных или активных локальных переменных. Это
блокирующий процесс – Node полностью останавливается на время очистки памяти, не реагирует на запросы и не выполняет никаких действий.
Итого, чтобы занимать меньше памяти, нужно запускать Node с параметром:
node --max_old_space_size=128 index.js
Тут указано занимать под old data не более 128 Mb памяти, т.е. весь Node займёт незначительно больше.
Можно задать переменную окружения
WEB_MEMORY
которой установить доступный процессу node.js объем памяти в Mb:
WEB_MEMORY=128 bash startup.sh
, если использовать для запуска node приложения скрипт, предложенный автором
статьи (на англ.), откуда я всё это только что сам узнал )