在自定义元素构造函数中创建MutationObserver导致内存泄漏
Memory leak from creation of MutationObserver in Custom Element constructor?
我有一个自定义元素类,在它的createdCallback中创建一个突变观察者。observer.disconnect()
从来没有被调用过。这会导致内存泄漏吗?如果有,你建议如何处理?
下面是一个基本的例子:
class SomeElement extends HTMLElement {
createdCallback() {
// Observe nodes in the future.
const observer = new MutationObserver(changes => {
for (let change of changes) {
if (change.type != 'childList') continue
for (let node of change.addedNodes)
this.childConnectedCallback(node)
for (let node of change.removedNodes)
this.childDisconnectedCallback(node)
}
})
observer.observe(this, { childList: true })
}
childConnectedCallback(node) {
// ...
}
childDisconnectedCallback(node) {
// ...
}
}
如果垃圾收集器设计得很好,它不应该有内存泄漏。当自定义元素本身被删除时,突变观察器将被删除。
无论如何,你总是可以在detachedCallback()
方法中调用observer.disconnect()
。在这种情况下,使用this.observer
而不是const observer
来保持引用
相关文章:
- 重复应用 d3 转换导致的内存泄漏
- IE7中的blockUI插件内存泄漏25kb
- Javascript闭包-如何防止内存泄漏
- jQuery Draggable:内存泄漏
- "检测到可能的EventEmitter内存泄漏”;使用Gulp+Watchify+Factor捆绑包
- 在Dojo类中递归调用setTimeout时是否存在内存泄漏
- 是内存泄漏
- 将处理程序留在img.onload上是内存泄漏
- 具有并发sse连接的node.js内存泄漏
- 简单对象的Javascript内存泄漏
- WeakMap是否会将我从父/子关系的内存泄漏中拯救出来
- Javascript绘制画布内存泄漏
- Node.js”;检测到EventEmitter内存泄漏”;
- 正在清理内存泄漏
- 递归Javascript对象是否会导致任何问题(内存泄漏)
- Angular JS$编译服务导致$watch内存泄漏
- 如何防止和防范闭包内存泄漏
- 跟踪 JavaScript 内存泄漏的工具
- 页面刷新后javascript内存泄漏有问题吗?为什么?
- XMLHttpRequest循环内存泄漏