G1的一些概念

一、概念解释

  1. 分区(Region):G1将整个堆划分为同等大小的区块,一个分区可以是年轻代(Eden、Survivor)、也可以是老年代分区;G1是基于一个分区进行垃圾收集的。
  2. 对象的年龄(Object Aging):存活对象所经历过的年轻代收集的总次数;
  3. 浮动垃圾:少量死的对象在某次GC后可能还没被回收,这种死了的对象叫做floating garbage。
  4. CSet:一系列分区的集合,也是在垃圾收集过程中被回收的目标
  5. RSet:记录从其他分区指向当前分区的引用,本质上数据结构是一个hash table
  6. mutator线程:在垃圾收集器的术语中被称为Java应用线程
  7. SATB:Snapshot At the Beginning,是GC开始时活着的对象的一个快照,是G1 GC的理论基础
  8. 年轻代收集(young gc):CSet里全部都是年轻代分区的收集
  9. 混合收集(mixed gc):CSet里包括年轻代分区和一部分老年代分区的收集
  10. 混合收集周期:混合收集可能不止一个,多个混合收集连续发生就组合成一个混合收集周期;
  11. G1中的垃圾收集过程:年轻代收集和混合收集交替进行,背后有全局的并发标记周期在进行。当老年代分区占用的空间达到或超过IHOP值,就会触发并发标记周期。
  12. 并发周期
  • 初始标记(STW):标记处根集合可直达的对象;
  • 并发标记:递归扫描整个堆里的对象图,包括SATB中写栅栏记录的引用;
  • 重新标记(STW):处理所有剩下的SATB日志缓冲区和所有更新,也会在这里处理弱引用;
  • 清除(STW):识别所有空闲分区、整理堆分区,为混合收集识别出高效的老年代分区;RSet梳理

二、参数学习

  1. -XX:InitiatingHeapOccupancyPercent:在G1中,IHOP的值是老年代空间占Java堆总空间的比例
  2. -XX:G1MixedGCCountTarget:一个混合收集周期中包含多少次混合收集
  3. -XX:G1HeapWastePercent:堆浪费百分比,当G1发现可被回收的空间小于5%时,就不会再进行混合收集,也就是会结束当前的混合收集周期

本号专注于后端技术、JVM问题排查和优化、Java面试题、个人成长和自我管理等主题,为读者提供一线开发者的工作和成长经验,期待你能在这里有所收获。


G1的一些概念_第1张图片
javaadu

你可能感兴趣的:(G1的一些概念)