young GC(minor GC)
新生代的gc
Serial
串行收集,在执行垃圾回收的时候,会暂停用户线程,即STW(stop the world)
Parnew
并行收集,多核处理器的情况下不会发生用户线程停止的现象
Parallel Scavenge(PS)
关注于用户的吞吐量:
用户线程执行时间/(用户线程执行时间+gc执行时间)
old GC(major GC)
老年代的gc
CMS
首次清除
根据根搜索法找出老年代可达的对象,会发生STW
并发标记
查找老年代中与上面标记出对象有关系的对象进行标记
重新标记
上诉两个阶段可能由新的对象进入老年代,也可能由新生代对象引用了老年代,把这些老年代对象进行标记
并发清除
将没有标记的对象全部清除
SerialOld
串行收集,会STW
ParallelOld
并行收集
Full GC
full gc = minor GC + major GC
G1
去除了分代的概念,而是将整个堆内存分为均等的region区域,然后有一个card table去记录每个region的状态
如:E(edon)、 S(s0、s1) H(要收集的对象)
全堆扫描后将H区数据清除
欢迎大家和帝都的雁积极互动,头脑交流会比个人埋头苦学更有效!共勉!
公众号:帝都的雁