在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);