NodeJS / ExpressJS内存泄漏

时间:2014-03-19 13:37:32

标签: node.js memory express memory-leaks

我是这样的静态ExpressJS服务器:

var express = require("express"),
    app = express();

app.use(express.static(__dirname));

app.listen(1050);

当我启动服务器时,它使用20MB的v8堆。如果我每秒重新加载页面,则使用的堆不断增长。 4小时后,它将使用40MB的v8堆。总的v8堆到80MB,RSS(进程使用的总内存)达到130MB。

为什么这个简单的静态服务器使用了这么多ram?这似乎是内存泄漏。如果我不停止重新加载页面,则使用的内存会不断增长。

如果像这样的简单静态服务器使用太多内存,则无法进行大型项目。

NodeJS版本:v0.10.21 ExpressJS版本:3.3.5

编辑:我注意到它是NodeJS的一个问题,因为我尝试了node-static而不是express,当使用的/ total V8堆保持不变时,nodejs使用的RSS内存继续增长。 / p>

屏幕:
https://www.dropbox.com/s/4j5qs3rv2549dix/Screenshot%202014-03-20%2014.06.57.png https://www.dropbox.com/s/0c30ou8l3rv2081/Screenshot%202014-03-20%2014.07.54.png https://www.dropbox.com/s/5be1isk4v70qj8g/Screenshot%202014-03-20%2014.08.10.png
(从13:48开始)

2 个答案:

答案 0 :(得分:3)

不确定您是否仍然需要答案,但对于可能遇到同样问题的其他人来说,这是一个不好的帖子。

我遇到了同样的问题并通过使用:

修复了它
--max-old-space-size 5

这限制了在GC被删除之前保留的内存量。

答案 1 :(得分:1)

为潜在地帮助NodeJS和Express的创建者,请尝试获取内存快照(使用chrome dev工具完成,使用url chrome:// inspect),这将使您能够看到分配内存的位置。