新生代:
1.GC之Serial收集器(串行收集器)
单线程收集器,在进行垃圾回收的时候会暂停所有的用户线程,直至收集结束。限定于单个CPU环境。对应单CPU环境,它没有其他的线程交互的开销,实现了CPU的最大的利用率。是Client模式下默认的新生代垃圾回收器
JVM参数:
-XX:+UseSerialGC
开启后 :YoungGC使用的是SerialGC+OldGC使用的是 Serial Old(MSC)的收集器组合模式
2.GC值Parnew收集器(并行收集器)
多个线程进行垃圾回收,其他的用户线程都会停止,直至回收完成
server模式下默认的垃圾回收机制。
启动ParNewGC收集器,只影响新生代,不影响老年代。
JVM参数:
-XX:+ParNewGC
开启后:新生代:ParNewGC+老年代:SerialOld,新生代用的复制算法,老年代用的标志-整理算法
并行回收:
Parallel Scavenger :复制算法,并行的多线程垃圾收集器,吞吐量优先收集器,它的新生代和老年代都是用的并行收集器。
JVM参数(这两个参数可以互相激活)
-XX:+UseParallelGC
-XX:+UseParallelOldGC
老年代:
CMS收集器(并发标志清除)
以获取最短回收停顿时间为目标的收集器
适用于互联网站或者B/S,这类应用尤其注重服务的响应速度,希望系统停顿时间短。
CMS收集器适用于堆内存大,cpu的核数多的服务器应用。是G1之前的首选
CMS收集器是并发低停顿,并与用户程序一起执行。
CMS的优缺点:
优点:并发收集低停顿
缺点:
1.并发执行对cpu的压力比较大
2.使用标记清除算法会产生大量的碎片
JVM参数:
-XX:+UseConcMarkSweepGC
并发标记收集器的集合:
ParNew+CMS +SerialOld
标记清除法的优缺点
好处:节约空间
坏处:产生内存碎片
CMS的四个步骤:
Serial Old收集器:
Serial收集器在老年代版本。使用的是标记整理方法。是Client模式的老年代默认的方法。
启动多少GC线程:
公式:
-XX:ParallelGCThreads=N
cpu > 8 N = 5/8
cpu < 8 N=实际个数