甲方拳手
1 初始标记 stw 赶紧标记一下 时间短所以标记的少
2 并发标记 初始标记把大块都标记好了 继续在初始标记上 深入标记
3 并发预处理 并发标记时间会长一点 这时可能有新的对象进入老年代,把他们找出来
4 重新标记 把他们都标记出来
5 清理
6 重置CMS收集器的数据结构,等待下一次垃圾回收。
乙方选手
G1的思路说起来也类似,它不要求每次都把垃圾清理的干干净净,它只是努力做它认为对的事情。
1.初始标记 stw 对栈里面局部变量GC root 静态变量 gcroot 找出来
2.并发标记 找到后 深入标记
3.最终标记 最终确定 那些存活 那些回收
4.混合回收 自己 根据内存占比 回收时间 算的最优解 (G1老年代 占比45% 会触发混合回收)
相同点 123 阶段 三色标记