【问题标题】:Which modern browsers use Mark and Sweep Algorithm for Garbage Collection?哪些现代浏览器使用标记和扫描算法进行垃圾收集?
【发布时间】:2019-10-06 15:57:07
【问题描述】:

在进行垃圾收集时,我遇到了Reference CountingMark & Sweep GC 算法。
网络上的一些研究表明,引用计数已成为过去,今天的大多数浏览器都采用了 Mark and Sweep。根据文章here

Since 2012, JavaScript Engine’s have adapted this algorithm over Reference-counting garbage collection.

虽然我没有找到任何相同的标准文档,但我很想知道以下内容:

  1. 除了循环依赖之外,是否还有其他原因使我们放弃了引用计数并采用了 Mark & Sweep?
  2. 所有现代浏览器(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


【解决方案1】:

引用MDN

截至 2012 年,所有现代浏览器都提供了标记和清除垃圾收集器。过去几年在 JavaScript 垃圾收集(分代/增量/并发/并行垃圾收集)领域所做的所有改进都是该算法的实现改进,但不是对垃圾收集算法本身的改进,也不是它对何时定义的减少“不再需要一个对象”。

【讨论】:

    猜你喜欢
    • 2011-07-08
    • 2011-07-16
    • 2017-11-16
    • 1970-01-01
    • 2014-12-04
    • 2015-02-07
    • 2014-11-08
    • 2018-06-10
    • 1970-01-01
    相关资源
    最近更新 更多