Почему в операционной системе nodejs гораздо больше виртуальной памяти по сравнению с необходимой памятью сценария? - PullRequest
0 голосов
/ 28 августа 2018

Я использую 5k loc express приложение с множеством дополнительных зависимостей, включая express. Приложение говорит, что занимает около 60 МБ оперативной памяти RSS. Но когда я смотрю на фактическое использование оперативной памяти на моей машине с Linux, top говорит мне, что она использует ~ 1200 МБ VIRT памяти, в то время как занимает только ~ 60 МБ RES (RSS) памяти.

Затем я написал простой test.js сценарий, чтобы выделить случай:

setInterval(() => {
  console.log(JSON.stringify(process.memoryUsage()));
} , 1000);

И запустил его, используя: node test.js

Он говорит, что использует около 30 МБ ОЗУ:

{"rss":30097408,"heapTotal":6537216,"heapUsed":3829224,"external":8272}

Снова глядя на память в команде top, я вижу 30 МБ RES, но около 470 МБ VIRT.

PID  USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
8498 ted       20   0  485948  29928  23540 S   0,3  0,8   0:00.44 node

NodeJS не кажется таким легким.

Хостер моего приложения NodeJS (не тестового приложения) постоянно выделяет мне около 600 МБ памяти для приложения, но через несколько секунд уничтожает процесс моего узла из-за высокого использования памяти. Высокое использование виртуальной памяти (упомянутые 1200/3800 МБ) принимается за триггер. Итак, мои вопросы:

Почему использование виртуальной памяти для приложения так высоко по сравнению с фактически необходимой памятью? За что берется память?

Можно ли как-нибудь ограничить виртуальную память для NodeJS (она вообще используется?)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...