node.removeChild(node.firstChild) 是否会造成内存泄漏?
Does node.removeChild(node.firstChild) create a memory leak?
MDN says 这是一种从节点中删除所有子节点的方法。但是由于代码中只引用了第一个子节点,其他的会不会变成内存孤儿呢?是否知道任何或所有浏览器是否属于这种情况? DOM 标准中是否有某些内容要求在执行此操作时进行垃圾回收?
我猜你指的是这个例子
// 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);
}
不,它不会导致内存泄漏。
第一个 child 被删除后,第二个将取代它作为第一个 child,依此类推,直到没有更多的 children 离开。
此外,垃圾回收通常不能按需请求,虚拟机会在它认为可以的时候执行,这在浏览器之间确实有所不同。
MDN says 这是一种从节点中删除所有子节点的方法。但是由于代码中只引用了第一个子节点,其他的会不会变成内存孤儿呢?是否知道任何或所有浏览器是否属于这种情况? DOM 标准中是否有某些内容要求在执行此操作时进行垃圾回收?
我猜你指的是这个例子
// 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);
}
不,它不会导致内存泄漏。 第一个 child 被删除后,第二个将取代它作为第一个 child,依此类推,直到没有更多的 children 离开。
此外,垃圾回收通常不能按需请求,虚拟机会在它认为可以的时候执行,这在浏览器之间确实有所不同。