1

有什么问题?

首先,我认为我的 node.js 模块或代码有问题,因为当我访问我的页面时,每次访问后内存都会减少并且它没有被释放回来。经过数小时的调试,我找不到任何问题,因此我尝试了默认的 node.js 服务器示例,以查看问题是在我的代码中还是在 node.js 本身中。

如何重复问题:

所以我创建了这样的服务器:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(80);
console.log('Server running at port 80');

我反复访问mydomain.com并点击刷新,可用内存一直在下降,即使我释放刷新后,内存仍然保持在同一水平,所以node.js保持它。

那么这里有什么问题呢?

环境

我在ubuntu 12, max os x 10.8.3, node v0.9.0, node v0.10.0,v0.10.2上测试存在问题的地方以及v0.10.4它正常工作的地方,这就是为什么我说它可能是较新版本中的错误。v0.11.1node v0.8.21

4

1 回答 1

2

V8将在需要时调用GC,此时应减少内存使用量。

为了确保GC进程正常工作,我建议您使用参数运行node--expose-gc并使用以下内容检查内存使用情况:

var http = require('http'),
    util = require('util');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');

    global.gc();
    console.log('Memory Usage:');
    console.log(util.inspect(process.memoryUsage()));
}).listen(8080); // changed the port to 8080 because I didn't want to run the server as root

console.log('Server running at port 8080');
于 2013-04-21T17:49:11.890 回答