首先,我在我的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.1
进行测试问题存在,并且node v0.8.21
它正常工作,这就是为什么我说这可能是新版本中的错误。
答案 0 :(得分:2)
V8
会调用 GC ,此时应减少内存使用量。
为确保 GC 进程正常运行,我建议您使用--expose-gc
参数运行 node 并检查内存使用情况,如下所示:
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');