用于调试JavaScript中的内存泄漏的工具

时间:2010-08-26 08:17:22

标签: javascript memory-leaks

我在一个相当复杂的JavaScript项目中遇到了内存泄漏问题,我希望有一些工具可以帮助我找出问题的原因。

我已尝试使用Google Chrome开发人员工具“配置文件”标签,我可以在其中拍摄HEAP的快照,并将其与之前的快照区分开来(查看http://www.youtube.com/GoogleDevelopers#p/c/B9EC47A6AAE4540F/1/OxW1dCjOstE以了解该功能的快速启动)。

我可以通过这个工具看到内存耗尽但是从那里我找不到一种方法来检测对象的引用保存在哪里(可能在闭包中)。

我的问题是:您使用哪些工具进行JavaScript内存泄漏调试?有没有一个工具可以让我看到它们所在的参考资料和一些源代码?

3 个答案:

答案 0 :(得分:34)

我似乎经常遇到这个问题,除了在你的javascript中选择智能断点之外,从来没有真正有一个很好的答案。有时候有一种适合您特定情况的工具可以帮助您找到问题,有时候我找到泄漏是一个漫长的过程。

查看Chrome DevTools中的Allocation profiler,它为您提供了分配的用户界面,然后让您可以走回他们的住所。

这是good list of leak tools for Mozilla。此外,还有一些screencasts of how to use the tools。特别是,您可能会对“堆栈跟踪的后处理”部分感兴趣,因为它提到能够从堆栈跟踪中获得更好的符号和文件名/行号信息。

如果您在Windows上使用Internet Explorer,可以使用JavaScript Memory Leak Detector,这可能也很有用。

最后,我在阅读MemoryLeakChecker之后在github上找到了一个名为post here的好工具,它查找大型数据结构,并试图帮助您确定泄漏内存的位置。

希望这会有所帮助,让我知道哪一个(如果有的话)最终会帮助你。很抱歉没有实际的超链接,因为我现在有10个以下的声誉我不能把它们全部放在帖子中。

答案 1 :(得分:0)

看看https://addons.mozilla.org/en-US/firefox/addon/2490/我没有尝试过,但似乎有一些不错的功能。

答案 2 :(得分:0)

检查一下 - > http://ejohn.org/blog/deep-tracing-of-internet-explorer/ 它仅适用于IE浏览器

修改:链接到产品 - > http://ajax.dynatrace.com/ajax/en/