小编典典

如何确定 node.js 的正确“最大旧空间大小”?

all

我在理解 Node.js 如何基于参数 的行为时遇到了一些麻烦max-old-space-size

例如,就我而言,我正在运行两个t2.smallAWS 实例(2GB RAM)。

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

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

我的应用程序不断增加内存使用量,我试图了解有关节点内部的一切。


阅读 164

收藏
2022-06-30

共1个答案

小编典典

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

如果堆内存消耗(即 GC 无法释放的活动对象)超过限制,V8 将崩溃您的进程(因为缺乏替代方案),因此您不想将其设置得太低。当然,如果您将其设置得太高,那么
V8 允许的额外堆使用可能会导致您的整个系统耗尽内存(并且交换或终止随机进程,因为缺乏替代方案)。

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

2022-06-30