Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nodejs writestream内存使用情况_Javascript_Node.js_Stream - Fatal编程技术网

Javascript Nodejs writestream内存使用情况

Javascript Nodejs writestream内存使用情况,javascript,node.js,stream,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() {})

看看这个示例代码,它在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的内存。但复制完成后,它永远不会释放此内存。这正常吗?为什么要保留这个内存?有没有办法强制它刷新它?

系统监视器会让您非常不准确地了解节点应用程序实际使用的内存使用情况。操作系统如何将内存分配给进程和节点如何管理自己的内存之间有很大的区别。您可以使用chrome开发工具来获得更好的外观。我在内存快照之前和之后运行了您的代码,比较了两者并发现以下内容:

简言之,您肯定不会像您所想的那样泄漏140MB。要亲自了解这一点,请遵循以下指南:


您如何知道内存未释放?从系统监视器!它使用140mb的内存,即使在复制完成后。谢谢你的回答!假设在一个极端的情况下,我们只有140MB的可用内存,NodeJ获得了它,完成了任务,正如你所说的,它释放了内存,操作系统认为这是内存再次可用还是根本没有可用内存?