首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用node-memwatch追踪内存泄漏?

使用node-memwatch追踪内存泄漏?
EN

Stack Overflow用户
提问于 2013-06-20 00:17:44
回答 2查看 1.1K关注 0票数 1

我正在尝试使用node-memwatch来跟踪应用程序中的内存泄漏。目前,我正在应用程序启动时创建一个HeapDiff,然后在mem-watch检测到泄漏时执行一个diff。我发现了一些看起来可疑的项目,但我不知道应该如何将报告内容映射到我的代码中。例如,在diff中报告以下项目:

代码语言:javascript
复制
 { what: 'String',
   size_bytes: 4785072,
   size: '4.56 mb',
   '+': 32780,
   '-': 563 },

似乎是内存泄露的首要嫌犯。我怎样才能找出是我的哪段代码导致了泄漏?在他们网站上给出的例子中,what通常与MyLeakyClass类似,而不是一种系统类型……

EN

回答 2

Stack Overflow用户

发布于 2013-12-12 22:56:13

这个特性似乎还没有实现:

特别是,我们希望node-memwatch能够提供泄漏对象的一些示例(例如,变量名称、数组索引或闭包代码)。

https://hacks.mozilla.org/2012/11/tracking-down-memory-leaks-in-node-js-a-node-js-holiday-season/

本应从以下代码中给出LeakingClass示例:https://github.com/lloyd/node-memwatch/blob/master/examples/basic_heapdiff.js

票数 1
EN

Stack Overflow用户

发布于 2015-02-01 14:57:38

这意味着,自启动HeapDiff以来,您已经创建了32780个字符串,并进行了垃圾回收。(您收集的文件可能是也可能不是在此窗口中创建的文件;当diff启动时,它们可能已经存在)。字符串使用的内存总量增加了4.56mb。所有这些都可以放在一个字符串中,也可以完美地均匀分布在32k个字符串中。你没有这方面的数据。

当然,字符串会出现在您的代码中。所以我的建议是,不要看那些。寻找具有更多可跟踪(greppable,稀有等)名称的对象,这些对象的名称正在增长,即使它们看起来比您的字符串增长得慢,也要跟踪这些对象。在这个过程中,你可能会发现你的大漏洞。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17196277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档