垃圾收集器一

Serial:

  1.单线程垃圾收集器,只会使用一个CPU或者一条线程执行垃圾收集工作。

  2.必须暂停所有其它线程

  3.新生代垃圾收集器,使用复制算法

  依然是虚拟机Client模式下的默认新生代收集器

ParNew:

  1.ParNew是Serial的多线程的版本

  2.新生代垃圾收集器,复制算法

  3.暂停所有用户线程

  4.被频繁使用的原因:除了Serial外,唯一可以和CMS垃圾收集器配合使用的新生代收集器

  5.配置-XX:+UseConcMarkSweepGC选项后,默认使用的新生代垃圾收集器为ParNew

  6.使用-XX:+UseParNewGC

  ParNew在单个CPU情况下绝对不会比Serial有更好的垃圾收集效果,甚至在两个CPU情况下不一定比Serial好

Parrallel Scanvanger:

  1.新生代收集器,使用复制算法

  2.关注虚拟机的吞吐量,目标是达到一个可控制的吞吐量,吞吐量 = 运行用户代码时间/(运行用户代码时间+垃圾收集器停顿时间)。(CMS关注停顿时间)

  3.配置-XX:MaxGCPauseMillis参数设置停顿时间

  4.配置-XX:GCTimeRatio配置吞吐量

  5.配置-XX:UseAdaptiveSizePolicy后就不在需要配置新生代大小(Xmn),Eden和surviva的比例以及晋升老年代的年龄等参数,虚拟机会自动调节,这种方式被称为GC自适应调节策略。

  停顿时间越短越适合与用户交互的程序,良好的响应速度能提高用户的体验,高吞吐量则可以高效率的使用CPU时间,尽快的完成程序的运算,适合后台运算而不需要交互的程序。

  GC的停顿时间是以牺牲吞吐量和内存空间为代价

 Serial Old收集器

  1.单线程垃圾收集器

  2.老年代收集器,标记-整理算法

  这个垃圾收集器主要在client下使用,在server下一:用于JDK1.5以前与parallel Scavenger配合使用,二:CMS的后备

parallel Old

  1.多线程垃圾收集器

  2.Parallel Scavenger的老年代版本,标记整理算法

  注重吞吐量以及CPU敏感的场合,可以优先选择parallel Scavenger加Parallel的组合。

 

posted @ 2017-10-25 17:38  Derleser  阅读(233)  评论(0)    收藏  举报