Chrome 17 内功的再次跃进——新垃圾回收器

Posted by pudd on November 23, 2011

Chrome dev 更新时我们提到过,17代引进了一个新的垃圾回收器,那这个东西是干嘛用的?

简单地说,程序运行时,会产生很多“垃圾”,“垃圾”的意思是它们已经完成了自己的任务了,未来在程序里再也派不上用场。问题是,这些垃圾还死占着系统的资源不放,如果不清理的话,程序就没有足够的内存进行下一步计算。

所以垃圾回收器的功能就是,找出垃圾,释放垃圾,回收它们的资源,供程序运行使用

那么 Chrome 17 的新垃圾回收器新在哪里?

我觉得以下两张 Benchmark 测试图表最能说明问题

老的垃圾回收器,只会在系统内存不够用的时候,才一次性释放,但是因为积攒下来的工作量太大,释放期间会引起明显的程序卡顿(129ms 和 250ms 两次剧烈的程序停顿就是释放内存引起的)

![](http://img.chromi.org/2011/11/benmark1.jpg "benmark1") >

新的垃圾回收器,在保证了程序性能的前提下,采用了灵活的内存释放方式,动态调整释放时间,如图表所见,内存释放引起的卡顿被均摊下来了(保持在 40ms 上下),在实际使用环境中,程序的流畅度会有明显的提高。

新的垃圾回收器是 Chrome 内存管理能力的一大跃进,对大型复杂 web app 的运行性能至关重要。

以上两张图分别用 16.0.912.41 beta 和 17.0.947.0 canary 截取,感兴趣的同学去这个页面亲测。

Via Chromium Blog