GC的设置

堆的回顾

 

串行收集器

一、最古老,最稳定算法

二、效率高多线程

三、停顿时间长并发

四、-XX:+UseSerialGC性能

        新生代和老年代使用串行回收线程

        新生代复制算法对象

        老年代标记-压缩blog

 

并行收集器

PerNew

一、-XX:+UserPerNewGC内存

       新生代 并行回收it

       老年代 串行回收io

二、多线程 ,多核支持

三、复制算法

四、-XX:ParallelGCThreads    限制线程数量

多线程不必定比单线程块

 Palallel收集器

 一、相似于PerNew

二、在串行化 基础上,新生代与老年代的并行化

三、更关注吞吐量

-XX:+UserPalallelGC新生代并行   老年代串行

-XX:+UserPalallelOldGC  新生代并行   老年代并行

 

其余:

 -XX:MaxGCPauseMills 最大的停顿时间, 单位毫秒  ,尽力保证gc操做不会超过改时间

   -XX: GCTimeRatio    0----100范围 ,垃圾收集时间占总时间的比  默认为99,表示最大使用1%的时间去作GC

这两个参数比较矛盾,由于停顿时间和吞吐量不能同时调优

 

                       

CMS收集器(并发标记  清除)   这里的并发 是与用户线程一块儿执行

一、标记  清除算法

二、并发阶段会下降吞吐量

三、老年代收集器 (新生代使用PerNew)

四、停顿时间少

五、-XX: +UseConMarkSweepGC

 

着重实现了标记的过程:

一、初试标记

      根能够直接关联到的对象

     速度块

二、并发标记(和用户线程一块儿执行)

      主要过程,标记全部的对象

三、从新标记

      因为并发标记的时候,用户线程正在执行,所以在正式清理前,再次修正

四、并发清除

       将标记的结果,直接清除

特色:

一、尽量的下降停顿

二、影响系统的性能

三、清理不完全

四、和用户线程一块儿执行,不能在空间快满的时候 再清理

-XX:CMSInitiatingOccupancyFraction设置触发GC的阈值
若是不幸内存预留空间不够,就会引发concurrent mode failure  ,以后会使用 串行收集器, 会停顿稍长时间

其余:

-XX:+ UseCMSCompactAtFullCollection Full GC后,进行一次整理整理过程是独占的,会引发停顿时间变长-XX:+CMSFullGCsBeforeCompaction 设置进行几回Full GC后,进行一次碎片整理-XX:ParallelCMSThreads设定CMS的线程数量

相关文章
相关标签/搜索