一尘不染

NodeJS建议使用max-old-space-size

node.js

我在了解NodeJS如何根据参数max-old-space-size进行操作时遇到了一些麻烦。

以我的情况为例,我正在运行两个t2.small aws实例(2GB RAM)。

不知道为什么,但是我确实设置了max-old-space-size =
4096(4GB)。在这种情况下,节点会做什么?此配置是否可能导致可能的内存分配失败?

如何根据服务器资源确定max-old-space-size的正确值?

PD:我的应用程序在不断增加内存使用量,我试图了解有关节点内部的所有内容。


阅读 10047

收藏
2020-07-07

共1个答案

一尘不染

“旧空间”是V8托管(又称垃圾收集)堆(即JavaScript对象所在的地方)中最大且最可配置的部分,该--max-old-space- size标志控制其最大大小。随着内存消耗接近极限,V8将在垃圾回收上花费更多时间,以释放未使用的内存。

如果堆内存消耗(例如,GC无法释放的活动对象)超出了限制,则V8将使您的进程崩溃(由于缺乏替代性),因此您不想将其设置得太低。当然,如果将它设置得太高,则V8允许的额外堆使用量可能会导致整个系统内存不足(并且由于缺乏替代性,所以交换或杀死随机进程)。

总之,在一台具有2GB内存的机器上,我可能会设置--max-old-space-size为1.5GB左右,以便为其他用途留一些内存并避免交换。

2020-07-07