我写了一个简单的节点服务器:
var http = require('http');
var server = http.createServer();
var i = 0;
var onRequest = function(req, res){
res.write('test ' + (++i));
res.end();
console.log(i);
};
server.on('request', onRequest);
server.listen(8080);
当我启动服务器时,节点正在使用 5.8 MB 内存,但在提供100,000个请求后,它的内存使用量为 21.5 MB 。
是否会在某个时间点(何时)取消分配此内存?
我确信脚本中没有内存泄漏,这太简单了。
我正在测试Windows 8,localhost。
答案 0 :(得分:3)
在最新版本的Node中,这个内存应该在某个时候由V8解除分配,这可能会逐步完成。
在以前版本的Node / V8中,取消分配更具侵略性,并且没有逐步完成。后者对表现不太好。
听一听http://nodeup.com/fortyfive
您可以像这样检查V8节点的版本:
node -e "console.log(process.versions.v8)"
这篇文章将为您提供大量指针,以检查Node.js中的内存泄漏 https://hacks.mozilla.org/2012/11/tracking-down-memory-leaks-in-node-js-a-node-js-holiday-season/
您也可以按照此处的详细说明强制GC:http://simonmcmanus.wordpress.com/2013/01/03/forcing-garbage-collection-with-node-js-and-v8/