串行收集:Serival + Serival Old
并行收集:ParallelScavenge + ParallelOld(JDK8默认的收集器) -XX:+UseParallelGC
并发收集:ParNew + CMS

串行收集:Serival + Serival Old

Serival:年轻代,单线程GC清理,存在STW问题(stop the world)其他线程等待GC的清理。采用copy算法。
ServivalOld:老年代,单线程GC清理,存在STW问题,采用标记压缩算法。
并行收集:ParallelScavenge + ParallelOld (PS + PO)

ParallelScavenge:年轻代,多线程GC清理,同样存在STW问题,采用copy算法。
ParallelOld:老年代,多线程GC清理,存在STW,采用标记压缩。
并发收集:ParNew + CMS

ParNew:PS的变种,为了迎合CMS。
CMS:CMS是一个里程碑式的技术,它让垃圾收集的过程同时可以执行其他线程。但是CMS会存在许多问题,会产生浮动垃圾。
CMS过程:
1、初始标记(InitialMark):单线程标记,标记GC Root直接相关联的对象,存在STW
2、并发标记(ConcurrentMark):业务线程执行过程中并发标记GC线程
3、重新标记(Remark):步骤二会产生新的GC,Remark暂停业务线程,标记GC,存在STW
4、并发清理(Concurrent Sweep):执行业务线程同时清理标记的GC,这个过程会产生垃圾--浮动垃圾