javascript - Object.observe/unobserve 如何与垃圾回收交互?

标签 javascript garbage-collection ecmascript-harmony object.observe

对象上有一个活跃的 Object.observe 会阻止它被垃圾收集吗?你需要先调用 Object.unobserve 让它被垃圾回收吗?还是对对象进行 GC 会移除其所有活跃的观察者?

最佳答案

观察一个对象并不能使它保持活力。一旦对象死亡,它的观察者就不会再收到任何事件。至少在 V8 的实现中是这样,这是迄今为止唯一的一个。如果有一天此功能成为标准,可以安全地假设它也适用于其他实现。

但是,观察会使其事件的观察者保持事件状态,以及与每个观察者函数关联的一些内部堆分配数据结构。事实上,只有当函数本身也死亡时,这些额外的数据才会死亡,即使它早已停止观察任何东西。

关于javascript - Object.observe/unobserve 如何与垃圾回收交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25314352/

相关文章:

javascript - 如何下载多张图片?

javascript - 如何将 SQLite 结果传递给 Nodejs 中的回调

Python 垃圾回收

java - 如何使用 yourkit 调查类加载器泄漏

javascript - Harmony代理,检测属性是否被访问或调用

javascript - 与 mongoose 类似的搜索文本(就像 sql 我们可以使用 like 查询)

garbage-collection - 如何在过多的 GC 中尽快 OOM?

javascript - ES6 模板字符串测试平台

javascript - EcmaScript 6 Map() 与 new Map()

javascript - 在 raphael paper 中拖放 dom 元素