- 及时释放不再使用的对象引用
- 原理:在 Node.js 中,垃圾回收机制会自动回收不再被引用的对象所占用的内存。所以,当一个对象不再需要使用时,手动将其引用设置为
null
,可以让垃圾回收器更快地回收这部分内存。
- 代码示例:
function processLargeData() {
let largeData = new Array(1000000).fill(1); // 模拟大量数据
// 对 largeData 进行处理
// 处理完成后,如果不再需要 largeData
largeData = null;
// 这里 largeData 所占用的内存会在合适的时候被垃圾回收器回收
}
- 使用流(Stream)处理数据
- 原理:流可以逐块处理数据,而不是一次性将所有数据加载到内存中。这对于处理大量数据非常有效,能显著减少内存占用。
- 代码示例:
const fs = require('fs');
const readableStream = fs.createReadStream('largeFile.txt');
const writableStream = fs.createWriteStream('outputFile.txt');
readableStream.on('data', (chunk) => {
// 这里可以对每一块数据进行处理
// 例如修改数据
let modifiedChunk = chunk.toString().toUpperCase();
writableStream.write(modifiedChunk);
});
readableStream.on('end', () => {
writableStream.end();
});
- 优化缓存策略
- 原理:合理使用缓存可以减少重复计算和数据获取,从而降低内存使用。但要注意缓存的清理,避免缓存无限增长导致内存泄漏。
- 代码示例:
const cache = {};
function expensiveCalculation(id) {
if (cache[id]) {
return cache[id];
}
// 模拟昂贵的计算
let result = id * id * id;
cache[id] = result;
return result;
}
// 定期清理缓存
setInterval(() => {
cache = {};
}, 60 * 1000); // 每 60 秒清理一次缓存