我们的服务器在云PaaS(特别是Bluemix)上运行Node.JS。
我们可以通过PaaS仪表板配置分配的内存量,但我注意到,对于大于~1.4GB的值,您还需要使用--max-old-space-size
选项执行节点(解释here)。
这意味着每当我想更改已分配内存的大小时,我必须在设置中的两个位置更改它。
如果我拨打node --max-old-space-size 99999999999 app.js
会怎么样? Node.JS会尝试分配99999999999MB,还是会考虑运行它的VM \ Container的实际内存限制?它是否会影响GC的行为(即如果看起来有很多可用空间,那么GC的运行时间会少一些)?是否有--max-old-space-size use-machine-limits
选项?
由于
答案 0 :(得分:4)
如果我调用节点--max-old-space-size 99999999999会发生什么 app.js? Node.JS会尝试分配99999999999MB,还是会 考虑运行它的VM \ Container的实际内存限制?
节点不会分配所述内存,但是为了响应不断增长的内存需求,它会尝试在应用程序中逐步增加相当小的块。
它是否会影响GC的行为(即如果它看起来像 很多可用空间,GC运行次数会少一些)?
是的,任期空间可能包含大量垃圾,而且拆分的频率会降低。
是否存在--max-old-space-size use-machine-limits选项?
老实说,我不知道 - 但是如果我得到这方面的信息,我会研究这个,并在这里更新。
希望这有帮助。
答案 1 :(得分:0)
给出大堆大小会使gc变慢并保留旧值。但是,提供大堆大小会导致频繁的gc操作,并且可能存在获得“内存不足”异常的威胁