Node.js 16.20.2堆内存大小修改无效,如何正确调整?
Node.js堆内存配置不生效的解决办法
问题排查点
- 检查环境变量是否传递给node进程:用
ps eww <进程ID>查看目标node进程的环境变量,确认是否存在NODE_OPTIONS="--max-old-space-size=256"。如果缺失,说明环境变量未被正确继承(比如sudo执行脚本时会重置部分环境变量)。 - 验证参数本身是否有效:直接在终端执行
node --max-old-space-size=256 -e "console.log(process.memoryUsage().heapTotal)",若输出接近268435456(256MB对应的字节数),说明参数本身没问题,问题出在脚本的环境变量传递上。
可靠的修改方案
直接在node启动命令中显式指定堆内存参数,避免环境变量传递的不确定性,修改后的脚本如下:
#!/bin/sh export HOST=0.0.0.0 export PORT=1234 export YPERSISTENCE=/opt/data/yjs-storage nohup node --inspect --max-old-space-size=256 ./bin/server.js >> ws.log 2>&1 & nohup node --inspect=0.0.0.0:9229 --max-old-space-size=256 ./bin/http_server.js >> http.log 2>&1 & tail -f ws.log
确认配置生效
启动进程后,通过以下方式验证:
- 连接到node的inspect端口,执行
process.memoryUsage(),查看heapTotal字段的数值是否接近256MB对应的字节数。 - 或者在进程运行时,查看进程的内存占用统计,确认堆内存上限已调整。
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

