2

我写了一个简单的节点服务器:

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 本地主机上进行测试。

4

1 回答 1

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 -假日季节/

您还可以在此处详细说明强制 GC:http: //simonmcmanus.wordpress.com/2013/01/03/forcing-garbage-collection-with-node-js-and-v8/

于 2013-06-11T16:13:24.987 回答