JVM GC 垃圾收集器配置

1.串行收集器:
    最古老,最稳定
    效率高
    可能会产生较长的停顿
    -XX:+ UseSerialGC
    – 新生代、老年代使用串行回收
    – 新生代复制算法
    – 老年代标记 - 压缩

2.并行收集器-parNew:
-XX:+ UseParNewGC
新生代并行
年代串行
Serial 收集器新生代的并行版本
复制算法
多线程,需要多核支持
- XX:ParallelGCThreads 限制线程数量

3.并行收集器-parallel

类似 ParNew
新生代复制算法
年代 标记 - 压缩
更加关注吞吐量
-XX:+ UseParallelGC
使用 Parallel 收集器 + 老年代串行
-XX:+ UseParallelOldGC
使用 Parallel 收集器 + 并行老年代

- XX:MaxGCPauseMills
最大停顿时间,单位毫秒
GC 尽力保证回收时间不超过设定值
- XX:GCTimeRatio
0-100 的取值范围
垃圾收集时间占总时间的比
默认 99 ,即最大允许 1% 时间做 GC
这两个参数是矛盾的。因为停顿时间和吞吐量不可能同时调优


4.CMS收集器

Concurrent Mark Sweep 并发标记清除
标记 - 清除算法
与标记 - 压缩相比
并发阶段会降低吞吐量
老年代收集器(新生代使用 ParNew
-XX:+ UseConcMarkSweepGC

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


总结:一些GC参数设置说明

-XX:+ UseSerialGC 在新生代和老年代使用串行收集
- XX:SurvivorRatio 设置 eden 区大小和 survivior 区大小的 比例
- XX:NewRatio : 新生代和老年代的比
- XX:+ UseParNewGC 在新生代使用并行 收集器
-XX:+ UseParallelGC :新生代使用 并行回收收集器
-XX:+ UseParallelOldGC :老年代使用并行回收收集
- XX:ParallelGCThreads 设置用于垃圾回收的线程
-XX:+ UseConcMarkSweepGC 新生代使用并行收集器,老年代使用 CMS+ 串行收集
- XX:ParallelCMSThreads :设定 CMS 的线程 数量
- XX:CMSInitiatingOccupancyFraction :设置 CMS 收集器在老年代空间被使用多少后 触发
-XX:+ UseCMSCompactAtFullCollection :设置 CMS 收集器在完成垃圾收集后是否要进行一次内存碎片的 整理
- XX:CMSFullGCsBeforeCompaction :设定进行多少次 CMS 垃圾回收后,进行一次内存 压缩
- XX:+ CMSClassUnloadingEnabled :允许对类元数据进行 回收
- XX:CMSInitiatingPermOccupancyFraction :当永久区占用率达到这一百分比时,启动 CMS 回收
- XX:UseCMSInitiatingOccupancyOnly :表示只在到达阀值的时候,才进行 CMS 回收


猜你喜欢

转载自blog.csdn.net/u011943534/article/details/80376856