2010-08-26 31 views
48

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

我尝试了Google Chrome开发者工具配置文件选项卡,在此可以拍摄HEAP快照并将其与以前的快照区别开来(请检查http://www.youtube.com/GoogleDevelopers#p/c/B9EC47A6AAE4540F/1/OxW1dCjOstE以获取该功能的快速入门)。

我可以看到这个工具的内存消耗,但从那里我找不到方法来检测我的对象的引用保存(可能在关闭)。

我的问题是:你用什么工具进行JavaScript内存泄漏调试?有没有一种工具可以让我看到引用和一些源代码?

+0

我认为你的问题在这里不是ontopic(它不是一个编程问题,但要求一个软件),但它可能在http://softwarerecs.stackexchange.com ontopic。 – peterh 2015-09-10 12:55:04

回答

31

我似乎经常碰到这个问题,从来没有真正拥有比其他伟大的答案在你的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,这可能也很有用。

最后,在读取post here之后,我在github上发现了一个名为MemoryLeakChecker的漂亮工具,该工具查找大型数据结构并试图帮助您查明内存泄漏的位置。

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

0

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

+0

我会试一试,但它似乎致力于一个特定类型的泄漏与窗口间引用,当一个窗口关闭。我的应用程序是一个从不关闭的窗口ajax应用程序 – 2010-08-26 10:02:22