nodeJS何时以及如何释放堆内存?

时间:2015-10-05 20:03:28

标签: node.js

为了理解NodeJS的V8引擎的内存使用模式,我写了一个简单的web程序,如下所示:

contents of server.js:
var http = require("http");

var server = http.createServer(function(req, res) {
   res.write("Hello World");
   res.end();
});
server.listen(3000);

使用node server.js启动程序时,初始内存快照如下: enter image description here

在我对此服务器进行多次URL匹配后,我可以看到堆使用量增加的模式。更准确地说,对于每6或7次点击,增加4K。我不断重复点击大约2分钟,然后这是快照。 enter image description here

我没有看到堆使用率最终减少,即使我在没有负载的情况下保持空闲状态。

我的问题是:

  

这是正常行为,还是nodeJS中存在内存泄漏?   或者,我是否错误地理解或解释了它?

1 个答案:

答案 0 :(得分:2)

Node在引擎盖下使用V8,因此这个问题的答案很可能适用: How does V8 manage its heap?

代码似乎是有效的,所以为了测试你可以编写一个小应用程序来重复调用你的api,然后在运行时检查Node的内存。使用它来帮助检测可能的泄漏(如果垃圾收集器连续运行超过5次):http://www.nearform.com/nodecrunch/self-detect-memory-leak-node/