【发布时间】:2015-10-05 16:08:28
【问题描述】:
MDN says 这是从节点中删除所有子节点的一种方法。但是由于代码中只引用了第一个子节点,那么其他子节点会成为内存孤儿吗?是否知道任何或所有浏览器都是这种情况?这样做时,DOM 标准中有什么要求垃圾收集的东西吗?
【问题讨论】:
标签: javascript dom memory-management garbage
MDN says 这是从节点中删除所有子节点的一种方法。但是由于代码中只引用了第一个子节点,那么其他子节点会成为内存孤儿吗?是否知道任何或所有浏览器都是这种情况?这样做时,DOM 标准中有什么要求垃圾收集的东西吗?
【问题讨论】:
标签: javascript dom memory-management garbage
我猜你指的是这个例子
// 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);
}
不,它不会导致内存泄漏。 发生的情况是,在第一个孩子被移除后,第二个孩子将取代它作为第一个孩子,依此类推,直到没有更多的孩子离开。
而且垃圾回收通常不能按需请求,虚拟机会在它认为可以的时候进行,这在浏览器之间确实有所不同。
【讨论】: