以下节点js代码中是否可能存在内存泄漏?

时间:2015-07-18 20:26:38

标签: javascript node.js memory-leaks

我注意到以下节点js代码在运行时继续使用越来越多的内存。不确定何时/如果GC启动,但堆大小在短短3分钟内从7.7稳定增长到约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();

1 个答案:

答案 0 :(得分:0)

您发布的代码中没有泄漏。由于某种原因,nodejs可能没有压缩堆。您添加--trace-gc以告知节点记录垃圾回收事件。您还可以使用--max-new-space-size=1024来增加新分配可用的内存量,以强制更频繁的GC并帮助验证是否存在泄漏或只是偶尔进行压缩。