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。

posted @ 2018-05-19 17:37  川雨淅  阅读(411)  评论(0编辑  收藏  举报