Node.JS – 设置max-old-space-size的副作用太大?

我们的服务器在云PaaS(特别是Bluemix)上运行Node.JS。 我们可以通过PaaS控制面板configuration分配的内存量,但我注意到,对于大于1.4GB的值,您还需要使用--max-old-space-size选项执行节点( 此处解释)。

这意味着,只要我想改变分配的内存大小,我必须在设置中的两个地方进行更改。

如果我调用node --max-old-space-size 99999999999 app.js会发生什么情况? Node.JS会尝试分配99999999999MB,还是会考虑运行VM \ Container的实际内存限制? 它是否会影响GC的行为(即,如果看起来有很多可用空间,则GC将运行较less的次数)? 是否有--max-old-space-size use-machine-limits选项?

谢谢

如果我调用节点–max-old-space-size 99999999999 app.js,会发生什么情况? Node.JS会尝试分配99999999999MB,还是会考虑运行VM \ Container的实际内存限制?

节点将不分配所述内存,但是它将尝试响应于不断增长的内存需求,如果发生这种情况,则在应用程序中 – 递增地,以合理的小块。

它是否会影响GC的行为(即,如果看起来有很多可用空间,则GC将运行较less的次数)?

是的,任期空间可以包含大量垃圾,并且解除分配的次数也会减less。

是否有–max-old-space-size使用机器限制选项?

老实说,我不知道 – 但是会研究这个,并且在这里更新,如果我得到这方面的信息的话。

希望这可以帮助。

给大堆大小会使gc变慢,并保留旧的值。 但是,大堆大小会导致频繁的gc操作,并且可能会出现“内存不足”exception