我很难理解怎么做.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,以便为其他用途保留一些内存,并避免交换.

Node.js相关问答推荐

node 无法验证第一个证书

如何使用jq将依赖项添加到package.json中

NX无法使用缓存运行根级脚本

仅当所需文档是最后一个文档时才更新MongoDB,否则插入

Node.js PNG缓冲区获取未知图像格式错误

无法使用 Express 设置会话 cookie 的过期日期

TypeScript Eslint警告了一个AWS客户端构造函数(dynamodb),但没有警告另一个(s3)

nyc 代码覆盖不适用于 NodeJs Express 服务器

如何解决未调用 Express 错误处理程序的问题

在 Node JS 中使用 url 链接而不是文件路径

Fly.io 启动问题:无法从源获取图像或构建错误:构建错误:连接期间出错:发布...

如何解决 npm install react-select failure with error : An unknown git error occurred, git@github.com :Permission denied (publickey)

将 AllowDiskUse true 添加到 node.js 中的 MongoDB 聚合?

类型中缺少属性,该类型是由类实现的接口

Connect/Express 中的session和cookieSession中间件有什么区别?

如何使用 gulp-uglify 缩小 ES6 函数?

向 Stripe 提交付款请求时出现没有此类令牌错误

如何在 MongoDB 上只收听 localhost

npm install packagename --save-dev 不更新 package.json

用于轻松部署和更新的 Node.js 设置