Mar*_*ann 11 javascript garbage-collection qooxdoo
我目前正在重新思考qooxdoo JavaScript框架的对象处理处理.
看看下图(A目前在范围内):
假设我们要删除B.通常,我们会删除所有对象之间的所有引用.这意味着我们在示例中切断了连接1到5.这真的有必要吗?
至于我已经阅读这里,浏览器使用的标记-清除算法.在这种情况下,我们只需要切割参考1(与范围的连接)和5(与DOM的连接),这可能会更快.
但我可以确定所有浏览器都使用标记和扫描算法或类似的东西吗?
对于任何像样的垃圾收集器(不仅仅是标记和清除),切断连接 1 就足以释放 B(以及 C、D 和窗口)。基于引用计数的分配由于 B 和 D 的循环引用(B 引用 D 和 D 引用 B)而无法释放 B 和 D,但引用计数并不是真正的垃圾回收。
我认为可以安全地假设所有浏览器都使用像样的垃圾收集器(好吧,对于浏览器来说,没有什么是真正安全的,但是 JavaScript 实现不使用合适的垃圾收集器是不可能的)。
归档时间: |
|
查看次数: |
938 次 |
最近记录: |