【问题标题】:How to check if memory leak occurs when removing an element out of DOM?如何检查从 DOM 中删除元素时是否发生内存泄漏?
【发布时间】:2009-09-24 05:02:00
【问题描述】:
<div id="target">
...

</div>

$('#target').html('') 将删除内容,但是如何检查侦听器或其他保存内存的内容是否同时被删除?

【问题讨论】:

  • 由于 JavaScript 是垃圾收集的,因此对象可能不会在那个时候完全从内存中删除 - 只是有一个承诺,它们最终会被删除。只是要记住的事情。

标签: javascript jquery memory-leaks


【解决方案1】:

标准 JavaScript 没有定义任何方法来检测解释器的垃圾收集器,所以我认为这是不可能的。

但是,由于删除节点并不是一个不常见的操作,我不会担心在这种情况下浏览器会泄漏内存。确实如 Piskvor 所说,内存可能不会立即释放,而是在垃圾收集器最终运行时释放。

【讨论】:

    【解决方案2】:

    我不确定如何检测 JavaScript 中的泄漏(使用 JavaScript)。但是有一些工具可以用来检测 JavaScript 中的泄漏

    【讨论】:

      【解决方案3】:

      我不是这方面的专家,但由于您使用的是 jQuery,因此您应该使用 $('#target').empty()。这会在删除子元素之前分离所有事件处理程序。何时收集这些取决于浏览器,但这可确保在时机成熟时收集它们。您还可以使用$.remove() 来删除选定的元素和所有子元素。

      http://api.jquery.com/empty

      【讨论】:

        猜你喜欢
        • 2016-02-21
        • 2011-04-16
        • 1970-01-01
        • 2015-01-29
        • 2011-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多