V8 引擎
V8 是用 C++编写的 Google 开源高性能 Javascript 和 WebAssembly 引擎,它用于 Chrome 和 Node.js 等 它实现 ECMScript 和 WebAssembly,并可以跨平台运行 V8 可以独立运行,也可以嵌入到任何 C++应用程序中

- JS 引擎比较广泛采用的就是可达性中的标记清除算法,当然类似于 V8 引擎为了进行更好的优化,他在算法的实现细节上也会结合一些其他的算法。
- 标记整理和标记清除相似,不同的式回收期间同时会将保留的存储对象搬运汇集到连续的内存空间,从而整合空闲空间,避免内存碎片化。
- 分代收集,对象被分成两组:“新的”和“旧的”。许多对象出现,完成他们的工作并很快死去,他们可以很快被清理。那些长期存活的对象会变得“老旧”,而且被检查的频次也会减少。
- 增量收集,如果有许多对象,并且我们试图一次遍历并标记整个对象集,则可能需要一些时间,并在执行过程中带来明显的延迟。所以引擎试图将垃圾收集工作分成几部分来做,然后将这几部分会逐一进行处理,这样会有许多微笑的延迟而不是一个大的延迟。
大约 22 分钟