Javascript应用程序 - 泄漏内存

时间:2012-03-22 16:13:35

标签: javascript jquery

我开发了一个客户端应用程序,不幸的是我怀疑内存泄漏 应用程序有很多私有克隆对象,在每个函数的末尾我通过将对象设置为null来处置对象。 (foo = null;

我的问题是,我应该如何处理这些物品? 是否足以使用foo = null

此外,是否有任何工具可以帮助我找出问题?

最后我的问题是由于错误使用了jquery进度条而导致的

        function updateProgressBar() {
        if (!handle) //by adding this, the problem solved. 
            return;
        jQuery("#progressbar").progressbar({
            value: ++pct
        });
        if (pct >= 100) {
            clearInterval(handle);
            pct = 0;
            setInterval("updateProgressBar()", 300);
        }
    }

2 个答案:

答案 0 :(得分:3)

浏览器中内存泄漏的主要原因是DOM和JavaScript对象之间存在循环链接。当孤立的DOM节点仍然引用事件处理程序或其他JS对象时,通常会发生这种情况。 http://code.google.com/chrome/devtools/docs/heap-profiling-dom-leaks.html

Chrome开发者工具可让您查看堆并检查仍在内存中的元素,但不是通过使用的“堆分析器”http://gent.ilcore.com/2011/08/finding-memory-leaks.html

但是要解决实际的答案,将属性设置为null足以打破周期性引用并修复内存泄漏。

答案 1 :(得分:0)

可能是关闭问题吗?您应该尝试当前浏览器提供的方法,例如Chrome的Speed Tracer

在任何情况下,您使用的代码片段都有助于识别问题。