【问题标题】:Node.JS - any side effects of setting max-old-space-size too large?Node.JS - 设置 max-old-space-size 太大的任何副作用?
【发布时间】:2017-11-02 18:15:33
【问题描述】:

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

谢谢

【问题讨论】:

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


【解决方案1】:

如果我调用 node --max-old-space-size 99999999999 会发生什么 应用程序.js? Node.JS 会尝试分配 99999999999MB,还是会 考虑运行它的 VM\Container 的实际内存限制?

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

它是否会影响 GC 的行为(即,如果它看起来像 大量可用空间,GC 运行次数会更少)?

是的,tenure 空间可以包含很多垃圾,并且释放的频率会降低。

是否有 --max-old-space-size use-machine-limits 选项?

老实说,我不知道 - 但如果我得到这方面的信息,我会对此进行研究并在此处更新。

希望这会有所帮助。

【讨论】:

【解决方案2】:

提供较大的堆大小会使 gc 变慢并保留旧值。但是,提供较大的堆大小会导致频繁的 gc 操作,并且可能会出现“Out-of-Memory”异常的威胁

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    相关资源
    最近更新 更多