【对线面试官】G1垃圾收集器 - 图1

【对线面试官】G1垃圾收集器 - 图2

【对线面试官】G1垃圾收集器 - 图3

【对线面试官】G1垃圾收集器 - 图4

【对线面试官】G1垃圾收集器 - 图5

【对线面试官】G1垃圾收集器 - 图6

【对线面试官】G1垃圾收集器 - 图7

【对线面试官】G1垃圾收集器 - 图8

【对线面试官】G1垃圾收集器 - 图9

【对线面试官】G1垃圾收集器 - 图10

【对线面试官】G1垃圾收集器 - 图11

【对线面试官】G1垃圾收集器 - 图12

【对线面试官】G1垃圾收集器 - 图13

【对线面试官】G1垃圾收集器 - 图14

【对线面试官】G1垃圾收集器 - 图15

【对线面试官】G1垃圾收集器 - 图16

【对线面试官】G1垃圾收集器 - 图17

【对线面试官】G1垃圾收集器 - 图18

【对线面试官】G1垃圾收集器 - 图19

【对线面试官】G1垃圾收集器 - 图20

【对线面试官】G1垃圾收集器 - 图21

【对线面试官】G1垃圾收集器 - 图22

【对线面试官】G1垃圾收集器 - 图23

【对线面试官】G1垃圾收集器 - 图24

【对线面试官】G1垃圾收集器 - 图25

【对线面试官】G1垃圾收集器 - 图26

今日总结

G1垃圾收集器特点

  • 从原来的「物理」分代,变成现在的「逻辑」分代,将堆内存「逻辑」划分为多个Region
  • 使用CSet来存储可回收Region的集合
  • 使用RSet来处理跨代引用的问题(注意:RSet不保留 年轻代相关的引用关系)
  • G1可简单分为:Minor GC 和Mixed GC以及Full GC
  • 【Eden区满则触发】Minor GC 回收过程可简单分为:(STW) 扫描 GC Roots、更新&&处理Rset、复制清除
  • 全局并发标记的过程跟CMS过程差不多:初始标记(STW)、并发标记、最终标记(STW)以及清理(STW)
  • 【整堆空间占一定比例则触发】Mixed GC 依赖「全局并发标记」,得到CSet(可回收Region),就进行「复制清除」
  • 使用SATB算法来处理「并发标记」阶段对象引用存在变更的问题
  • 提供可停顿时间参数供用户设置(G1会尽量满足该停顿时间来调整 GC时回收Region的数量
  • R大描述G1原理的时候,他提到:从宏观的角度看G1,主要分为两块「全局并发标记」和「拷贝存活对象

《对线面试官》系列目前已经连载31篇啦,这是一个讲人话面试系列

参考资料: