Node.js流中的内存泄漏

时间:2015-07-29 12:22:13

标签: node.js memory-leaks

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

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

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'));
});

在使用基准测试工具启动多个请求并分析与“顶部”一起使用的内存后,我发现它已经增长并且从未发布。

完成请求后对刷新路由的调用也不会释放内存。

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

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

0 个答案:

没有答案