- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我的 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
来找出我的代码出了什么问题。
结果显示 closure
导致泄漏,但没有指定足够的目标。
我有这样的 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 识别闭包的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13798495/
我正在尝试使用 node-memwatch 来追踪我的应用程序中的内存泄漏。目前,我正在应用程序启动时创建一个 HeapDiff,然后在 mem-watch 检测到泄漏时进行比较。我发现了一些看起来可
最近,我的 Node 应用程序面临内存泄漏,但我无法在本地计算机上识别其来源。我想知道是否 memwatch-next在我的生产应用程序中使用是否安全,或者这样做是否有任何性能或任何其他缺点。 最佳答
我有一个 Node 应用程序随着时间的推移而变慢。读那个https://hacks.mozilla.org/2012/11/tracking-down-memory-leaks-in-node-js-
我的 Node.js 项目出现内存泄漏,我已经在闭包中将变量设置为 null,我的意思是,我知道这样的代码: var a = 0; var b = 1; var c = 0; example_func
尝试使用“npm install memwatch”安装 memwatch 时,出现此错误: 我在服务器上安装了带有 python 2.6.6 的 CentOS6。 memwatch@0.2.2 in
我是一名优秀的程序员,十分优秀!