NodeJS рекомендуется max-old-space-size

У меня возникли проблемы с пониманием того, как NodeJS действует на основе параметра max-old-space-size.

в моем случае, например, я запускаю два t2.небольшие экземпляры aws (2 ГБ ОЗУ).

Не знаю, почему, но я установил max-old-space-size=4096 (4GB). Что делает node в этом случае? Может ли эта конфигурация привести к возможному сбою выделения памяти?

Как определить правильное значение max-old-space-size на основе сервера ресурсы?

PD: мое приложение постоянно растет использование памяти, и я пытаюсь понять все о внутренних узлах.

1 ответов


"старое пространство" -это самый большой и самый настраиваемый раздел управляемой (ака мусорной) кучи V8 (т. е. где живут объекты JavaScript) и --max-old-space-size флаг управляет его максимальным размером. Поскольку потребление памяти приближается к пределу, V8 будет тратить больше времени на сборку мусора, чтобы освободить неиспользуемую память.

Если потребление памяти кучи (т. е. живые объекты, которые GC не может освободить) превышает предел, V8 приведет к сбою вашего процесса( из-за отсутствия альтернативы), поэтому вы не хочу опускать его слишком низко. Конечно, если вы установите его слишком высоко, то дополнительное использование кучи, которое позволит V8, может привести к тому, что ваша общая система исчерпает память (и либо заменит, либо убьет случайные процессы из-за отсутствия альтернативы).

В общем, на машине с 2 ГБ памяти я бы, вероятно, установил --max-old-space-size около 1,5 ГБ, чтобы оставить память для других целей и избежать замены.