在 Debian 下运行 Node.js 程序时遇到内存不足(OOM / JavaScript heap out of memory),可以从临时解决、长期优化、系统层面三个方向来处理。
export NODE_OPTIONS="--max-old-space-size=4096"
node app.js
或一次性:
NODE_OPTIONS="--max-old-space-size=8192" node app.js
单位:MB
常见值:
4096 / 81922048NODE_OPTIONS="--max-old-space-size=8192" npm run build
或写入 .bashrc / .zshrc:
echo 'export NODE_OPTIONS="--max-old-space-size=8192"' >> ~/.bashrc
很多 Debian 服务器 没有 swap,Node 一吃内存就被 kill。
free -h
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
开机自动挂载:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
✅ 强烈建议:云服务器 / 小内存 VPS 必做
❌ 错误示例:
const data = fs.readFileSync('big.json')
✅ 改为流式处理:
fs.createReadStream('big.json').pipe(...)
node --inspect app.js
用 Chrome DevTools:
chrome://inspect
重点看:
Promise.all(tasks) // ❌ 太多
改为:
p-limit老版本 Node 内存管理较差,建议:
node -v
✅ 推荐:
升级:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
| 现象 | 原因 |
|---|---|
JavaScript heap out of memory |
Node 内存限制 |
| 进程直接被杀 | 系统 OOM |
| 构建时挂 | 内存 + swap 不足 |
| 运行一段时间挂 | 内存泄漏 |
✅ 服务器 / CI / 构建机
# 增加 swap
# 增大 Node 内存
export NODE_OPTIONS="--max-old-space-size=8192"
✅ 生产服务
如果你愿意,可以把:
发出来,我可以给你精确方案。