GC参数

说GC参数前 先说下Java 中得三个收集器算法

串行收集器

  • 最古老,最稳定,效率高。
  • 可能会形成较长时间得停顿
  • -XX:+UseSerialGC,使用这收集器得时候,新生代、老年代使用串行回收,新生代使用复制算法,老年代使用标记-压缩算法

并行收集器

ParNew
  • -XX:+UseParNewGC:新生代并行,老年代串行
  • Serial收集器新生代得并行版本
  • 使用复制算法
  • 多线程,须要多核支持
  • -XX:ParallelGCThreads 限制线程数量
Parallel

相似于ParNew 新生代使用复制算法,老年代使用标记-压缩算法多线程

他与ParNew相比更加管住吞吐量并发

  • -XX:+UseParallelGC : 使用Parallel收集器+老年代串行
  • -XX:+UseParallelOldGC : 使用Parallel收集器+并行老年代

关于并行收集器得参数线程

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

CMS收集器

Concurrent Mark Sweep 并发标记清除(与用户线程一块儿执行),使用标记清除算法。并发阶段会下降吞吐量内存

  • -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回收

emmm这个就先这样吧,知识储备还不足it

相关文章
相关标签/搜索