Java-GC垃圾收集器-LMLPHP

1. Serial

  young generation

  “单线程”收集器,是指进行垃圾收集时,必须暂停其他所有工作线程,直到收集结束。是历史最悠久的收集器。

2. Serial Old

  tenured generation

  Serial收集器的老年代版本,用途:可与Parallel Scavenge搭配使用;作为CMS收集器的后备预案。

3. ParNew

  young generation

  是Serial收集器的多线程版本。青年代收集时不需要stop the world。

  调优参数:

    -XX:SurvivorRatio

    -XX:PretenureSizeThreshold

    -XX:HandlePromotionFailure

4. Parallel Scavenge

  young generation

  GC自适应调优算法,注重吞吐量

  调优参数:

    -XX:GCTimeRatio    垃圾收集时间站总时间的比率,吞吐量的倒数

    -XX:MaxGCPauseMillis  最大垃圾收集停顿时间

5. Parallel Old

  tenured generation

  Parallel Scavenge收集器的老年代版本,使用多线程的标记整理算法。

  在注重吞吐量以及CPU资源敏感的场合,都可使用Parallel Scavenge与Parallel Old组合

  

6. CMS

  tenured generation

  一种以获得最短回收停顿时间为目标的收集器。

    -XX:+UseConcMarkSweepGC     打开CMS

7. G1

垃圾收集器常用参数:

参数                    描述                                            
UseSerailGC 
UseParNewGC 
UseConcMarkSweepGC 
UseParallelGC 
SurvivorRatio新生代中Eden区与Survivor区的容量比例,默认为8,Eden:Survivor=8:1
PretenureSizeThreshold晋升至老年代对象大小,大于则在老年代分配
MaxTenuringThreshold晋升至老年的年龄,经过一次Minor GC则加1,大于则进老年代
UseAdaptiveSizePolicy动态调整个区域大小及进入老年代年龄
HandlePromotionFailure 
ParallelGCThreads并行GC内存回收线程数
GCTimeRatioGC时间占总时间比率,默认99,即允许1%的GC时间。仅在Parallel Scavenge收集器生效
MaxGCPauseMillisGC最大停顿时间。仅在Parallel Scavenge收集器生效
CMSInitiatingOccupancyFractionCMS在年老代被使用多少后触发GC。默认68%,仅CMS
UseCMSCompactAtFullCollectionCMS收集后是否进行内存碎片整理,仅CMS
CMSFullGCsBeforeCompactionCMS进行若干次收集后才进行内存碎片整理
  
05-28 16:22