我很难理解怎么做.js基于参数max-old-space-size
进行操作.
例如,在我的例子中,我正在运行两个t2.small
AWS实例(2GB的RAM).
不知道为什么,但我设置了max-old-space-size=4096
(4GB).node在这种情况下做什么?这种配置可能会导致内存分配失败吗?
如何根据服务器资源确定max-old-space-size
的正确值?
我的应用程序不断增加内存使用量,我试图了解 node 内部的一切.
我很难理解怎么做.js基于参数max-old-space-size
进行操作.
例如,在我的例子中,我正在运行两个t2.small
AWS实例(2GB的RAM).
不知道为什么,但我设置了max-old-space-size=4096
(4GB).node在这种情况下做什么?这种配置可能会导致内存分配失败吗?
如何根据服务器资源确定max-old-space-size
的正确值?
我的应用程序不断增加内存使用量,我试图了解 node 内部的一切.
"旧空间"是V8托管(也称为垃圾收集)堆(即JavaScript对象所在的位置)中最大且最可配置的部分,--max-old-space-size
标志控制其最大大小.随着内存消耗接近极限,V8将在垃圾收集上花费更多时间,以释放未使用的内存.
如果堆内存消耗(即GC无法释放的活动对象)超过限制,V8将使进程崩溃(因为缺乏替代方案),因此您不希望将其设置得太低.当然,如果您将其设置得太高,那么V8允许的额外堆使用可能会导致整个系统内存不足(由于缺乏替代方案,可能会交换或杀死随机进程).
总之,在一台内存为2GB的机器上,我可能会将--max-old-space-size
设置为大约1.5GB,以便为其他用途保留一些内存,并避免交换.