node:将流传递给stdout泄漏内存

时间:2017-11-28 21:33:48

标签: node.js node.js-stream

在MacOS 10.12.6上的节点v8.9.1中:

下面的最小脚本创建了一个Readable流,它会产生无限量的字符串“yes”。然后将其传送到stdout。据我所知,它是根据编写自定义Readable流的指南编写的。特别是,当push()返回false时,它会停止产生数据。

然而,当我从一个终端运行它时,该进程的内存使用量将无限膨胀,达到2GB非常快,甚至超过。这似乎表明stdout流中有某种无限的积累。

任何人都可以诊断并解释幕后发生的事情吗?

var stream = require("stream");

var yesStream = new stream.Readable({
  read: function(length) {
    while (yesStream.push("yes\n")) {}
  }
});
yesStream.pipe(process.stdout);

0 个答案:

没有答案