JVM六大垃圾回收器特点及区别
1、Serial:
标记整理算法。
单线程,适合单CPU,效率高,STW。
Old:
单线程回收老年代,CMS 发生Concurrent Mode Failure的备选方案。
2、Parallel:
New:
Serial多线程版。
默认使用线程数和CPU个数相同,
可通过+UseParallelGCThreads控制。
Scavange:
注重吞吐量,可设置垃圾回收时间和其占比。
-XX:+UseAdaptiveSizePolicy自适应堆中各区占比。
Old:
标记整理算法。
Scavenge老年代版本,Parallel Scavenge+Parallel Old可实现高吞吐量。
3、CMS
标记清除算法。
力求回收时间最短。
标记:
初始——>并发——>置新
初始、置新还是会STW,时间较短。
并发,和其他线程一起运行,默认使用(当前CPU个数+3)/4线程,比Parallel并发标记快很多。
缺点:
对CPU敏感,最好4个以上。
回收中还会产生垃圾。
产生空间碎片。
可以设置Full GC后,磁盘碎片整理。
然而,碎片整理时,不能并发回收。可以设置碎片整理的次数。^_^,打补丁。
ps:
STW——>Stop The Word。