一、最古老,最稳定算法
二、效率高多线程
三、停顿时间长并发
四、-XX:+UseSerialGC性能
新生代和老年代使用串行回收线程
新生代复制算法对象
老年代标记-压缩blog
一、-XX:+UserPerNewGC内存
新生代 并行回收it
老年代 串行回收io
二、多线程 ,多核支持
三、复制算法
四、-XX:ParallelGCThreads 限制线程数量
多线程不必定比单线程块
一、相似于PerNew
二、在串行化 基础上,新生代与老年代的并行化
三、更关注吞吐量
-XX:+UserPalallelGC新生代并行 老年代串行
-XX:+UserPalallelOldGC 新生代并行 老年代并行
-XX:MaxGCPauseMills 最大的停顿时间, 单位毫秒 ,尽力保证gc操做不会超过改时间
-XX: GCTimeRatio 0----100范围 ,垃圾收集时间占总时间的比 默认为99,表示最大使用1%的时间去作GC
这两个参数比较矛盾,由于停顿时间和吞吐量不能同时调优
一、标记 清除算法
二、并发阶段会下降吞吐量
三、老年代收集器 (新生代使用PerNew)
四、停顿时间少
五、-XX: +UseConMarkSweepGC
一、初试标记
根能够直接关联到的对象
速度块
二、并发标记(和用户线程一块儿执行)
主要过程,标记全部的对象
三、从新标记
因为并发标记的时候,用户线程正在执行,所以在正式清理前,再次修正
四、并发清除
将标记的结果,直接清除
一、尽量的下降停顿
二、影响系统的性能
三、清理不完全
四、和用户线程一块儿执行,不能在空间快满的时候 再清理
-XX:CMSInitiatingOccupancyFraction设置触发GC的阈值
若是不幸内存预留空间不够,就会引发concurrent mode failure ,以后会使用 串行收集器, 会停顿稍长时间
-XX:+ UseCMSCompactAtFullCollection Full GC后,进行一次整理整理过程是独占的,会引发停顿时间变长-XX:+CMSFullGCsBeforeCompaction 设置进行几回Full GC后,进行一次碎片整理-XX:ParallelCMSThreads设定CMS的线程数量