我是这样的静态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开始)
答案 0 :(得分:3)
不确定您是否仍然需要答案,但对于可能遇到同样问题的其他人来说,这是一个不好的帖子。
我遇到了同样的问题并通过使用:
修复了它--max-old-space-size 5
这限制了在GC被删除之前保留的内存量。
答案 1 :(得分:1)
为潜在地帮助NodeJS和Express的创建者,请尝试获取内存快照(使用chrome dev工具完成,使用url chrome:// inspect),这将使您能够看到分配内存的位置。