1.主要的内容:
1)FGC分为 YGC和 OGC
2) 分代,新生代:老年代 = 1: 2
伊甸园,幸存区1,幸存区2
8 : 1 : 1
3)回收器:
① 序列化的回收器: STW stop-the-world
② 多个序列化的回收器: 上下文切换
③ cms回收器: 并发垃圾回收
4)怎么知道在GC:
== 日志
== JFR: java 14开始支持
5)cms回收器:
① 三色标记法:
② 问题:
== 会产生 浮动垃圾
== 在 remark阶段,从头扫描时,会产生 STW, 甚至会花费很多时间
6)G1 :
① 使用 SATB 来解决 三色标记可能出现的问题
灰色对象到白色对象的引用消失的话,记录到 栈中,等 垃圾回收线程回来后,到这个栈中检查这个消失的引用
② 处理方式:
使用的是 物理上分区(region),逻辑上分代的方式
== 常见问题:
G1 不用手工指定 新老年代的比例。
③ JVM调优:
G1的JVM调优,只有10多个参数,调优较为简单
cms的JVM调优,有 70多个参数