我很难理解Node.js是如何基于参数max-old-space-size
工作的。
例如,在我的例子中,我运行两个t2.small
AWS实例(2GB内存)。
不知道为什么,但我确实设置了max-old-space-size=4096
(4GB)。在这种情况下节点是做什么的?这种配置会导致内存分配失败吗?
如何根据服务器资源确定max-old-space-size
的正确值?
我的应用程序在不断增加内存使用量,我正在努力了解有关节点内部的所有内容。
发布于 2020-08-19 21:33:27
2020更新
这些选项是现在由节点正式记录。对于2GB的机器,您可能应该使用:
NODE_OPTIONS=--max-old-space-size=1536
确定要使用的金额
您可以使用free -m
在Linux机器上看到可用内存。请注意,您可以将free
和buffers/cache
内存的总数考虑为可用的,因为buffers/cache
可以在需要时立即丢弃(这些缓冲区和缓存是使用其他未使用内存的好方法)。
在内存为2GB的计算机上,考虑将其设置为1536 (1.5GB)
因此,上述价值。考虑到基本操作系统所需的内存量并没有太大的变化,所以您可以很高兴地在一台4GB的机器上完成3.5。
要注意默认值并查看更改的效果:
缺省值为2GB:
$ node
> v8.getHeapStatistics()
{
....
heap_size_limit: 2197815296,
}
2197815296是2GB字节。
当设置为8GB时,您可以看到heap_size_limit
更改:
$ NODE_OPTIONS=--max_old_space_size=8192 node
Welcome to Node.js v14.17.4.
Type ".help" for more information.
> v8.getHeapStatistics()
{
...
heap_size_limit: 8640266240,
...
}
正如@Venryx下面提到的,您也可以使用process.memoryUsage()
https://stackoverflow.com/questions/48387040
复制相似问题