看看这个示例代码,它在 Nodejs 中创建文件的副本。
var fs = require('fs');
var out = fs.createWriteStream('1_GB_FILE_COPY');
var inp = fs.createReadStream('1_GB_FILE');
inp.pipe(out);
inp.on('end', function() {
console.log("end");
})
process.stdin.on('data', function() {});//just to keep process alive after copy
一切顺利,这段代码可以工作并且副本已制作完成。 Nodejs 在复制过程中使用了大约 140MB 的内存。但在复制完成后,它永远不会释放该内存。这是正常的吗?为什么 Node 保留这个内存?有什么办法可以强制它冲洗吗?
最佳答案
系统监视器为您提供了关于 Node 应用程序实际使用的内存使用情况的非常不准确的 View 。操作系统如何为进程分配内存和 Node 如何管理自己的内存之间存在很大差异。您可以使用 chrome 开发工具来获得更好的外观。我运行了您的代码,拍摄了内存快照之前和之后的数据,比较了两者并发现了以下内容:
简而言之,您绝对不会像您想象的那样泄漏 140MB。要亲自了解这一点,请遵循以下一个很好的指南:
关于javascript - Nodejs writestream 内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30275497/