在 Ubuntu 上运行 JavaScript(Node.js 或浏览器环境)时,“优化内存”通常可以从代码层面、Node.js 运行时配置、系统层面三个方向来做。下面按场景给你一套实用建议。
Node 默认内存有限(约 1.5–2GB,取决于版本和架构):
node --max-old-space-size=4096 app.js
或在 package.json:
{
"scripts": {
"start": "node --max-old-space-size=4096 app.js"
}
}
常见泄漏点:
setInterval示例:
// ❌ 错误
setInterval(() => {}, 1000);
// ✅ 正确
const timer = setInterval(() => {}, 1000);
clearInterval(timer);
不要一次性读入内存:
const fs = require('fs');
const readStream = fs.createReadStream('big.log');
readStream.on('data', chunk => {
// 处理 chunk
});
let cache = new Map();
setInterval(() => {
cache.clear();
}, 60 * 1000);
在 Ubuntu 上推荐:
npm install -g clinic
clinic heapprofiler -- node app.js
或:
node --inspect app.js
然后用 Chrome DevTools 连接分析。
function bad() {
const big = new Array(1e6);
return () => big;
}
window.removeEventListener('resize', handler);
WeakMap / WeakSetconst cache = new WeakMap();
ps aux | grep node
或:
top -p $(pgrep node)
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
systemd-run --scope -p MemoryMax=1G node app.js
❌ 频繁 JSON.parse / stringify 大对象
❌ 用数组当队列且不清理
❌ 在循环中创建大对象
如果你能补充:
我可以给你更针对性的优化方案。