jvm 垃圾收集器分析

jvm 垃圾收集器分析

jvm 垃圾收集器分析
  新生代收集器 老年代收集器 优点 缺点
serial收集器 V  

1.jdk1.3开始的单线程收集器

2.client模式下很好的选择。

3.复制算法

1.单线程,收集时需要暂停所有线程(stop the world)

 

parNew收集器 V  

1.serial的多线程版

2.server模式下

3.可与CMS收集器工作

4.线程数与cpu数相同

1.单CPU下不会比serial收集器性能好 
 Parallel Scavenge 收集器  V  

 1.能达到期望的吞吐量

-XX:MaxGCPauseMilis 停顿时间,-XX:GCTimeRatio设置吞吐量大小。

-XX:UseAdaptiveSizePlicy:GC自适应调节策略。

 

1.停顿时间减少,gc频率就会加大。 
 serial Old    V

 1.单线程和serial组合合用

2.client模式下

3.CMS的后备预案

4.标记整理算法

 1.单线程

2.client模式下

 parallel Old    V

 1.Parallel Scavenge 收集器老年版本

2.多线程“标记整理”算法

3.在吞吐量优先和CPU资源敏感的场合下都可以优先考虑用Parallel Scavenge+Parallel Old组合

 
 CMS    V

1.并行收集

2.低停顿 

 1.cpu敏感

2.无法处理浮动垃圾

3.标记-清除算法,会有空间碎片引起fullGc

 G1  V  V

 1.并行与并发

2.分代收集

3.空间整合,整体是标记-整理,局部是得制算法。

4.可预测的停顿

 
         
         

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

高吞吐量可以高效率地利用CPU时间,尽快完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。

 

 

 

 

 

查看当前jvm 垃圾收集器

java -XX:+PrintFlagsFinal
可以看到1.8默认的是 UseParallelGC
ParallelGC 默认的是 Parallel Scavenge(新生代)+ Parallel Old(老年代)
在JVM中是+XX配置实现的搭配组合:
UseSerialGC 表示 “Serial” + "Serial Old"组合
UseParNewGC 表示 “ParNew” + “Serial Old”
UseConcMarkSweepGC 表示 “ParNew” + “CMS”. 组合,“CMS” 是针对旧生代使用最多的
UseParallelGC 表示 “Parallel Scavenge” + "Serial Old"组合
UseParallelOldGC 表示 “Parallel Scavenge” + "Parallel Old"组合
在实践中使用UseConcMarkSweepGC 表示 “ParNew” + “CMS” 的组合是经常使用的

上一篇:JVM7:常见的垃圾回收器


下一篇:并行计算 cv::parallel_for_() 函数