垃圾收集器|g1收集器
每个region(区域)的大小 1~32M,是2的幂次方
对象储存:
-
0.5region <= 对象 <1 region,这个对象会直接存储在 O区,并标记为H区(超大对象区)
-
对象>1 region,会申请两个H区来存储这个对象
region组成:
-
Rset:region有一块区域叫做Rset,用来记录其他region引用当前region的对象
-
Cset:本次GC需要清理的region集合
YOUNG GC
GC过程:对象拷贝,E + S (from) => S (to)
-
Young Generation:E + S(from)
-
Recently Copied in Young Generation:S (to),未使用时没有标记,拷贝后标记为 S (to)
MIx GC(OLD GC时,会同时有 YOUNG GC)
GC过程
-
初次标记,标记GCRoot直接引用的对象和对象所在的region(称为RootRegion),初次标记会有STW (stop the world)
-
Stop the World,简称STW,指的是Gc事件发生过程中,会产生应用程序的停顿。停顿产生时整个应用程序线程都会被暂停,没有任何响应,有点像卡死的感觉,这个停顿称为STW。
-
-
扫描所有OLD区的Rset,标识 RootRegion有引用的region
-
并发标记,遍历RootRegion有引用的区(上一步标识的region),不用遍历整个OLD区
-
重新标记,本来有使用,但是系统运行后变成未被使用的对象,使用算法SATB,这一步会有STW (stop the world)
-
复制清理,会有STW ,只清理垃圾较多的region