javascript - 下面的node js代码是否可能存在内存泄漏?

标签 javascript node.js memory-leaks

我注意到以下 Node 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();

最佳答案

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

关于javascript - 下面的node js代码是否可能存在内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31495256/

相关文章:

javascript - 为什么我的函数在不应该被调用的时候被调用了?

javascript - 修复 Selected startDate 应该是下一个 end Date

javascript - 在 Extjs 4.2.0 中将附加参数传递给回调函数

node.js - 快速 Handlebars : Getting current URL query and passing query to a template?

windows - Windows 和 Node App 中的文件路径字符限制错误

memory-leaks - Angular.js 内存泄漏与 ngRepeat 对轮询数据

JavaScript 事件模型

node.js - 无法创建 yeoman webapp

Perl substr 内存泄漏

c++ - 如何正确删除多维 vector ?