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

Is there possibly a memory leak in the following node js code?

我注意到以下节点 js 代码在运行时不断使用越来越多的内存。不确定 when/if 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();

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