Javascript应用程序-内存泄漏

Javascript应用程序-内存泄漏,javascript,jquery,Javascript,Jquery,我开发了一个客户端应用程序,不幸的是我怀疑内存泄漏。 应用程序有很多私有克隆对象,在每个函数结束时,我通过将对象设置为null来处理这些对象。(foo=null;) 我的问题是,我应该如何处置这些物品? 使用foo=null就足够了吗 另外,是否有任何工具可以帮助我识别问题 解决方案 最后,我的问题是由于错误使用jquery进度条造成的 function updateProgressBar() { if (!handle) //by adding this, th

我开发了一个客户端应用程序,不幸的是我怀疑内存泄漏。
应用程序有很多私有克隆对象,在每个函数结束时,我通过将对象设置为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);
        }
    }

浏览器内存泄漏的主要原因是DOM和JavaScript对象之间存在循环链接。当孤立的DOM节点仍然引用事件处理程序或其他JS对象时,通常会发生这种情况

ChromeDeveloper工具允许您查看堆并检查仍在内存中但未通过使用的“堆分析器”的元素


但要解决实际问题,将属性设置为null就足以中断循环引用,并应修复内存泄漏。

闭包可能有问题吗?您应该尝试当前浏览器提供的方法,比如Chrome


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

为什么您怀疑内存泄漏?我观察浏览器的进程并访问应用程序,一两分钟后内存急剧增加,最后我从浏览器收到一条消息,上面写着“内存不足”。也许我用错了“怀疑”这个词。正确的是,我确信:)看看chrome开发者工具。有一个堆快照,可以显示x时间消耗的内存量,并让您查看整个链。了解您在firefox和chrome中看到的浏览器会很有帮助。最后是jquery progrssBar()的错误使用。但是通过这个任务,我学会了如何识别内存泄漏:)你建议我的第二个url很好。很遗憾,第二个链接指的是一个有Mac电脑的用户。用户在Mac上所做的任何事情都应该被丢弃。傻麦克,把戏是给孩子们的@暗影编剧没有领会你的幽默:p