Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 使用memwatch-node识别关闭的内存泄漏大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的Node.js项目遇到内存泄漏,我已经将闭包中的变量设置为null,我的意思是我知道这样的代码

var a = 0;
var b = 1;
var c = 0;
example_func(c,func(){
    console.log(b);
});

会导致内存泄漏,所以我添加一些代码将这些变量设置为null;

var a = 0;
var b = 1;
var c = 0;
example_func(c,func(){
    console.log(b);
    a = null;
    b = null;
    c = null;
});

但是我仍然有漏洞,所以我尝试使用memwatch-node来确定我的代码有什么问题.

结果表明,关闭导致泄漏,但未指定足够的目标.

我有这样的JSON

{ what: 'Closure','+': 12521,size: '520.52 kb','-': 5118,size_bytes: 533016 },

我想知道我是否可以获得关于哪个关闭泄露的更具体的细节.

我分配了所有关闭名称,但仍然没有工作.

解决方法

你不能更具体地了解哪个关闭. memwatch获取v8堆的转储,然后获取它的差异并报告泄漏,如果在5个连续的垃圾收集事件之后,该对象类型计数继续增长.

此外,我相信你对什么关闭是困惑的. The MDN page on closures给了一个很好的描述.闭包不是一个变量,而是一个范围,使得函数能够保留引用并在代码的一部分中使用时继续工作,这些变量引用将不可用.

如果你传递函数,请保留对该函数的引用,它的关闭可以引用其他闭包.所以,可能你有一个单一的关闭可能有很多.

执行此操作:禁用部分代码,直到memwatch停止抱怨.然后,看看那个代码.如果您仍然感到困惑,请在此问题中发布更多详细信息.

大佬总结

以上是大佬教程为你收集整理的node.js – 使用memwatch-node识别关闭的内存泄漏全部内容,希望文章能够帮你解决node.js – 使用memwatch-node识别关闭的内存泄漏所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: