如何避免在Firefox中导致内存泄漏?

时间:2010-05-20 17:12:22

标签: javascript firefox memory-management memory-leaks

似乎有很多关于IE中内存泄漏的信息以及Web开发人员如何避免它们,但我找不到有关避免FF泄漏的问题。我发现了很多关于最终用户如何调整他们的偏好或扩展开发人员提示的随机提示,但很少关于我作为Web开发人员可以做些什么来确保我的页面不会泄漏。我错过了什么吗?把它归咎于用户并说“你有太多的扩展”似乎很懒。或者主要模式与IE中的相同 - 循环引用和所有这些?

此外,如果有人知道任何解决FF泄漏问题的工具,那就太棒了。我找到了这个: https://addons.mozilla.org/en-US/firefox/addon/2490/ 但它显然只适用于chrome和扩展开发。

5 个答案:

答案 0 :(得分:3)

除了设计模式之外,唯一真正安全的方法是彻底测试您的页面。要监控浏览器的内存使用情况,任务管理器就可以了,但Process Explorer可以提供更准确的结果。

JavaScript是内存泄漏的一个原因,但也要小心页面上的flash电影。我们的内容团队在我们的设计部门添加了一部电影,该电影使用了第三方过渡效果,每20秒就吞下10Mb。只是观看电影循环通过它在TaskManager中很明显,当影响发生时看到内存跳转并且它从未完全释放它。

答案 1 :(得分:2)

您可以强制在FireFox中运行垃圾收集器。 Garbadge收藏家将摧毁&释放不再使用的对象。使用垃圾收集器“泄漏内存”的唯一可能性不是“泄漏”,而是一个没有意义的引用:删除对您不想使用的对象的所有引用。

在此页面阅读更多内容:
http://adblockplus.org/blog/different-ways-to-force-garbage-collection

答案 2 :(得分:2)

答案 3 :(得分:2)

关于如何避免浏览器内存泄漏的一些内容是关于如何避免导致浏览器无法回收应该回收的内存的事情。

然而,在许多情况下,更实质的问题是关于持有他们不再需要的对象的网页。回收浏览器的工作只是回收不再“可达”的东西 - 也就是说,脚本/页面无法再进入的东西了。如果你在数组中累积对象并且在完成它们时不删除它们,那么随着数组变大,内存使用量会增加,浏览器也无法做到这一点。

用另一种方式表达:这是网页中而不是浏览器中的内存泄漏问题。你想要的工具是一个内存分析工具来检查你的页面中可以访问的对象,这样你就可以判断那里有你不应该再坚持的东西了。为Firefox编写这样的工具已经列入我要做的事情列表了一段时间,但我还没有解决它。我认为可能正在编写一个与Firebug集成的工作。

答案 4 :(得分:0)

我不知道Firefox是否有特定信息,但通用提示仍然适用。

我建议您仔细检查所有循环和递归函数。重复使用现有对象而不是创建新对象,并确保临时对象和基元退出范围,以便可以释放它们。

相关问题