【问题标题】:How do I track and debug JavaScript memory leaks in Firefox?如何在 Firefox 中跟踪和调试 JavaScript 内存泄漏?
【发布时间】:2008-10-14 11:46:24
【问题描述】:

我已经尝试跟踪这个一个月了,但没有任何成功。我在汽车广告网站上有这段代码,考虑到汽车有多张图片,它基本上允许缩略图在搜索结果中旋转。您可以在以下位置看到它的实际效果:

http://www.abcavendre.com/4506691919/

它建立在mootools 1.2 框架之上。问题是这个脚本,在 Firefox 3 下,当页面充满那些旋转图片时,会消耗相当大的内存超时,例如这个库存页面:

http://www.abcavendre.com/Vitrine/Israel_Huttman/

您可以在此处查看相关脚本的来源:

http://www.abcavendre.com/scripts/showcase_small.js

关于导致内存泄漏的任何想法?奇怪的是这段代码在 IE7 下运行正常。

【问题讨论】:

  • 你解决了吗?如果是,问题是什么?
  • 我没能解决它。我从 Leak Monitor Addon 获得了有价值的信息。我还在努力。
  • 禁用 Firebug,如果它以任何方式启用。

标签: javascript memory-leaks mootools


【解决方案1】:

在 Firefox 中跟踪内存泄漏的一种方法是使用 Leak Monitor Addon。它显示了 javascript(包括扩展脚本)的内存泄漏。

请提醒,插件有时会显示泄漏的对象,这些对象稍后会被垃圾收集器清理掉。如果是这种情况,插件将启动一个新窗口,向您显示新状态。

【讨论】:

  • 你错过了:在 https 之后,所以 SO 将一个奇怪的 URL 发送到 TheEdge... :-)
  • 鉴于 SO 是一个英文网站,您可能需要提供英文链接:addons.mozilla.org/en-US/firefox/addon/2490
  • 泄漏监视器不再适用于任何现代版本的 Firefox :-(
  • 很遗憾上次插件的更新是在 5 年前完成的
【解决方案2】:

更新到 MooTools 1.2.1,我们改进了垃圾收集和泄漏处理。

【讨论】:

    【解决方案3】:

    尝试在初始化函数的末尾清空元素变量数组

        ...
    
        if (ads.length > 0)
            {
            this.imagesFx = new Fx.Elements(elements,
                {
                wait: false,
                duration: 1000
                });
            this.moveNext.periodical(2500, this);
            }
    
        elements = null; //Add THIS!
    }
    

    【讨论】:

    • 这不能解释超时发生的内存泄漏(没有页面刷新),因为每页只调用一次初始化函数。
    猜你喜欢
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    相关资源
    最近更新 更多