在 Ubuntu 上调整 Node.js 的内存,通常是从运行参数、系统限制、进程管理三个层面来做。下面按常见场景说明。
Node.js 默认老 heap 限制大约是 1.5GB(旧版本)或 2GB(新版本),可通过以下参数调整:
node --max-old-space-size=4096 app.js
表示最大老生代堆内存为 4GB
常用单位:
--max-old-space-size=4096其他相关参数:
node \
--max-old-space-size=4096 \
--max-new-space-size=1024 \
app.js
⚠️ 32 位系统有硬限制(通常 < 4GB)
export NODE_OPTIONS="--max-old-space-size=4096"
node app.js
Docker 示例:
ENV NODE_OPTIONS="--max-old-space-size=4096"
pm2 start app.js --node-args="--max-old-space-size=4096"
module.exports = {
apps: [{
name: "app",
script: "app.js",
node_args: "--max-old-space-size=4096"
}]
}
free -h
htop
ulimit -a
如果是容器或云服务器,可能受:
--memoryresources.limits.memoryulimit -n 65535
(通常不影响 Node 堆内存,但影响文件句柄)
node -e "console.log(process.memoryUsage())"
或在代码中:
console.log(process.env.NODE_OPTIONS);
| 问题 | 解决方式 |
|---|---|
heap out of memory |
加大 --max-old-space-size |
| Docker 中无效 | 检查容器 memory limit |
| PM2 不生效 | 用 node_args 而不是 shell 变量 |
| 内存一直涨 | 检查内存泄漏,不是调大就能解决 |
如果你能告诉我:
JS heap out of memory)我可以给你更精确的建议。