Node.JS - 设置max-old-space-size的任何副作用都太大了?

时间:2016-04-07 14:39:17

标签: node.js memory memory-management ibm-cloud v8

我们的服务器在云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选项?

由于

2 个答案:

答案 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操作,并且可能存在获得“内存不足”异常的威胁