Go 1:串行三色标记清扫
- Go 1.3:并行清扫,标记过程需要 STW,停顿时间在约几百毫秒
- Go 1.5:并发标记清扫,停顿时间在一百毫秒以内
- Go 1.6:使用 bitmap 来记录回收内存的位置,大幅优化垃圾回收器自身消耗的内存,停顿时间在十毫秒以内
- Go 1.7:停顿时间控制在两毫秒以内
- Go 1.8:混合写屏障,停顿时间在半个毫秒左右
- Go 1.9:彻底移除了栈的重扫描过程
- Go 1.12:整合了两个阶段的 Mark Termination,但引入了一个严重的 GC Bug 至今未修(见问题 20),尚无该 Bug 对 GC 性能影响的报告
- Go 1.13:着手解决向操作系统归还内存的,提出了新的 Scavenger
- Go 1.14:替代了仅存活了一个版本的 scavenger,全新的页分配器,优化分配内存过程的速率与现有的扩展性问题,并引入了异步抢占,解决了由于密集循环导致的 STW 时间过长的问题