老年代:
初始标记 - STW,标记一下GC Roots直接能引用的对象,很快
并发标记 - 和应用并行,进行GC Roots追踪存活对象,并记录新建和失去引用对象
最终标记 - STW,根据并发标记阶段的结果,最终标记垃圾对象
混合回收:
1、预估:这个阶段计算老年代中每个Region中的存活对象数量,存活对象的占比,垃圾回收的预期性能和效率
2、STW回收:选择性价比最高的Region进行回收,这个阶段会为了降低对应用的影响, 将回收操作默认分成了8次(-XX:G1MixedGCCountTarget控制),即MaxGCPauseMills = 8次回收时间之和
3、细分8次,5%停止:默认情况下,有可能回收次数不会达到8次,因为回收过程中,回收的Region数量到达了堆空间的5%(-XX:G1HeapWastePercent控制)就会停止回收。意思是:回收空间应该够用了,停下来让应用程序去执行吧。
??文中没有提到什么时候进行老年代单独GC,是不是可以认为和CMS一样,每次MajorGC都会伴随着一次MinorGC,在G1里就是MixedGC?
答:对的,可以这么认为。
??文中提到混合回收阶段,会对老年代进行计算和评估,那么什么时候对新生代空间中对象和大对象Region的计算和评估?
答:就在混合回收阶段的过程中,几次标记之后就会计算