javascript - Nodejs writestream 内存使用情况

标签 javascript node.js stream

看看这个示例代码,它在 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 开发工具来获得更好的外观。我运行了您的代码,拍摄了内存快照之前和之后的数据,比较了两者并发现了以下内容:

enter image description here

简而言之,您绝对不会像您想象的那样泄漏 140MB。要亲自了解这一点,请遵循以下一个很好的指南:

https://github.com/felixge/node-memory-leak-tutorial

关于javascript - Nodejs writestream 内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30275497/

相关文章:

javascript - 如何使用动态列号重新初始化DataTable?

javascript - 游戏 : square doesnt fall in canvas fiddle javascript, html5

javascript - 仅在表格内部显示边框 autoTable-jsPDF

javascript - Node.js HTTP 模块 : Response + Request

c++ - 在 C++ 中使用标准流的灵活记录器类

javascript - 从内容外部动画侧边栏然后返回

javascript - node.js webtorrent 通过磁力链接收集所有文件

node.js - 如何使用express和typeorm正确更新实体

node.js - 如何从高原溪流中读书?

C++:继承 std::basic_streambuf 的问题