2013-06-19 75 views
1

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

{ what: 'String', 
    size_bytes: 4785072, 
    size: '4.56 mb', 
    '+': 32780, 
    '-': 563 }, 

这似乎是内存泄漏的主要嫌疑人。我怎样才能找出哪一段代码导致了泄漏?在他们给在其网站上的例子,what通常是明显的东西像MyLeakyClass,而不是一个系统类型...

回答

1

这是什么意思是,你已经创建了32780个字符串和垃圾回收563,自开始你HeapDiff。 (你收集的可能不是在这个窗口中创建的;当差异开始时它们可能已经存在)。字符串使用的内存总量增加了4.56mb。这可能都在一个字符串中,或​​者它可以完全均匀地分布在32k字符串之间。你没有这方面的数据。

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