闲聊 v8 GC的进化(2)

垃圾回收的运行会阻断渲染进程的运行,这会影响浏览器的体验。V8引擎的开发者打算优化v8的垃圾回收模块,优化的垃圾收集器代号为Orinoco。Orinoco与之前未优化的垃圾回收器相比

  • 实现一个主要是并行和并发的垃圾收集器
  • 模糊代际边界(主要是新生代对象和老生代对象)
  • 减少了垃圾收集的时间和内存消耗,并提高了垃圾回收的吞吐量

在这篇文章中我们讨论新的垃圾收集器的三个特性,他们分别是

  • 并行compaction
  • 并行记忆集处理
  • 黑色分配

V8实现了代际垃圾收集器,新生代对象在经历两次回收生存下来的对象会被划分到老生代对象存储空间。对象在内存中移动的代价是很昂贵的,主要是在引擎中我们需要对象的需要复制到新的位置,此外我们还需要更新这些对象的指针。图1显示了Orinoco之前的阶段及其执行方式。基本上,对象先被移动,之后再更新这些对象之间的指针,所有这些都是按顺序进行的,消耗的时间过长。

对象依次顺序移动,然后更新指针
阅读 “闲聊 v8 GC的进化(2)” itemprop="discussionURL"发表评论