【发布时间】:2019-10-06 15:57:07
【问题描述】:
在进行垃圾收集时,我遇到了Reference Counting 和Mark & Sweep GC 算法。
网络上的一些研究表明,引用计数已成为过去,今天的大多数浏览器都采用了 Mark and Sweep。根据文章here
Since 2012, JavaScript Engine’s have adapted this algorithm over Reference-counting garbage collection.
虽然我没有找到任何相同的标准文档,但我很想知道以下内容:
- 除了循环依赖之外,是否还有其他原因使我们放弃了引用计数并采用了 Mark & Sweep?
- 所有现代浏览器(Chrome | Firefox | Safari | Edge | IE)都使用 Mark and Sweep 吗?
【问题讨论】:
-
IE 不是现代浏览器,但它仍然使用 Mark and Sweep。
-
不,大多数浏览器已经放弃了基本的标记和扫描算法,但它们仍然使用tracing GC approach。引用循环在 JS 中从来都不是问题,除了 IE 的 DOM 实现中的一个错误。
-
谢谢@Bergi!我们曾经使用过引用计数吗?
标签: javascript browser garbage-collection reference-counting mark-and-sweep