【问题标题】:Does node.removeChild(node.firstChild) create a memory leak?node.removeChild(node.firstChild) 是否会造成内存泄漏?
【发布时间】:2015-10-05 16:08:28
【问题描述】:

MDN says 这是从节点中删除所有子节点的一种方法。但是由于代码中只引用了第一个子节点,那么其他子节点会成为内存孤儿吗?是否知道任何或所有浏览器都是这种情况?这样做时,DOM 标准中有什么要求垃圾收集的东西吗?

【问题讨论】:

    标签: javascript dom memory-management garbage


    【解决方案1】:

    我猜你指的是这个例子

    // This is one way to remove all children from a node
    // box is an object reference to an element with children
    
    while (box.firstChild) {
      //The list is LIVE so it will re-index each call
      box.removeChild(box.firstChild);
    }

    不,它不会导致内存泄漏。 发生的情况是,在第一个孩子被移除后,第二个孩子将取代它作为第一个孩子,依此类推,直到没有更多的孩子离开。

    而且垃圾回收通常不能按需请求,虚拟机会在它认为可以的时候进行,这在浏览器之间确实有所不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-09
      • 2016-05-31
      • 2014-05-13
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      • 2017-12-02
      • 2010-10-11
      相关资源
      最近更新 更多