为了理解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启动程序时,初始内存快照如下:
在我对此服务器进行多次URL匹配后,我可以看到堆使用量增加的模式。更准确地说,对于每6或7次点击,增加4K。我不断重复点击大约2分钟,然后这是快照。
我没有看到堆使用率最终减少,即使我在没有负载的情况下保持空闲状态。
我的问题是:
这是正常行为,还是nodeJS中存在内存泄漏? 或者,我是否错误地理解或解释了它?
答案 0 :(得分:2)
Node在引擎盖下使用V8,因此这个问题的答案很可能适用: How does V8 manage its heap?
代码似乎是有效的,所以为了测试你可以编写一个小应用程序来重复调用你的api,然后在运行时检查Node的内存。使用它来帮助检测可能的泄漏(如果垃圾收集器连续运行超过5次):http://www.nearform.com/nodecrunch/self-detect-memory-leak-node/