【发布时间】:2015-07-18 20:26:38
【问题描述】:
我注意到以下节点 js 代码在运行时不断使用越来越多的内存。不确定 GC 何时/是否启动,但堆大小在短短 3 分钟内从 7.7 MB 稳定增长到大约 8.5 MB。有人可以告诉我是否存在内存泄漏以及原因,以及如果代码无限期运行是否会导致问题?谢谢!
var events = require('events');
var eventEmitter = new events.EventEmitter();
var queue = [];
var count = 0;
function queueAdd(){
setTimeout(function (){
if(queue.length >= 1){
eventEmitter.emit('next');
return queueAdd();
};
count += 1;
queue.push(count.toString());
queueAdd();
},1000);
}
eventEmitter.on('next', function (){
console.log(queue.shift());
});
queueAdd();
【问题讨论】:
-
7.7 到 8.5 听起来还不是很大 - 如果持续超过 3 分钟,增长实际上会持续吗?
-
@doldt 我已经监控了超过 1000 秒,内存使用量已经增长到 14 MB
-
你能检查你的堆栈,看看它是否在增长。您在这里使用递归有点不合常规,它可能会导致堆栈不断增长。
-
@bhspencer - 看起来没有任何“阻塞”调用。你认为堆栈可以在这里生效吗?
-
@bhspencer 这不是递归。
标签: javascript node.js memory-leaks