Node.js:新版本中存在严重的内存泄漏错误
Node.js: Serious Memory Leak Bug in newer versions?
有什么问题?
首先,我认为我的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
正常工作的地方,这就是为什么我说这可能是新版本中的错误。
V8
将在需要时调用GC,此时内存使用量应该会减少。
为了确保GC进程工作正常,我建议您使用--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');
相关文章:
- 重复应用 d3 转换导致的内存泄漏
- IE7中的blockUI插件内存泄漏25kb
- Javascript闭包-如何防止内存泄漏
- jQuery Draggable:内存泄漏
- "检测到可能的EventEmitter内存泄漏”;使用Gulp+Watchify+Factor捆绑包
- 在Dojo类中递归调用setTimeout时是否存在内存泄漏
- 是内存泄漏
- 将处理程序留在img.onload上是内存泄漏
- 具有并发sse连接的node.js内存泄漏
- 简单对象的Javascript内存泄漏
- WeakMap是否会将我从父/子关系的内存泄漏中拯救出来
- Javascript绘制画布内存泄漏
- Node.js”;检测到EventEmitter内存泄漏”;
- 正在清理内存泄漏
- 递归Javascript对象是否会导致任何问题(内存泄漏)
- Angular JS$编译服务导致$watch内存泄漏
- 如何防止和防范闭包内存泄漏
- 跟踪 JavaScript 内存泄漏的工具
- 页面刷新后javascript内存泄漏有问题吗?为什么?
- XMLHttpRequest循环内存泄漏