Node.jsstream中的内存泄漏

我在express.js应用程序中发现了一个奇怪的内存使用增加,经过大量的调查,我发现问题是在使用可写入stream写入文件时造成的。

要隔离问题,我创build了这个简单的应用程序:

var express = require('express'); var http = require('http'); var path = require('path'); var fs = require('fs'); var app = express(); app.set('port', process.env.PORT || 3000); var writable = fs.createWriteStream('/tmp/stream', {flags: 'a'}); var i = 1; app.get('/', function (req, res) { i = i + 1; writable.write(i + '\n'); res.end(); }); app.get('/flush', function (req, res) { writable.end(); res.end(); }); http.createServer(app).listen(app.get('port'), function () { console.log('Express server listening on port ' + app.get('port')); }); 

在用基准testing工具发起了几个请求并分析了与“top”一起使用的内存之后,我意识到它的发展并不会被释放。

完成请求之后对flush路由的调用也不释放内存。

这是内存泄漏还是我做错了什么?

我用节点0.8.6,0.10.37和0.12.7进行了testing,结果相同。