JVM基本参数设置

  # JVM基本参数设置

1.通用配置

  1. -XX:PretenureSizeThreshold=1m:大对象直接分配在老年代,这个参数只对 Serial 和ParNew两个收集器有效
  2. -XX:MaxTenuringThreshold=15:动态年龄超过15次,进入老年代。等于 0 的话,就直接入老年代
  3. -Xms20m:设置堆最大内存
  4. -Xmx20m:设置堆内存大小
  5. -Xmn10m:设置新生代内存大小
  6. -XX:G1HeapRegionSize:G1收集器每个Region的大小
  7. -XX:SurvivorRatio=8:设置一个eden和一个suvivor的比值
  8. -XX:+PrintTenuringDistribution:JVM 在每次新生代GC时,打印出幸存区中对象的年龄分布

2.G1配置

  1. -XX:+UseG1GC:使用G1垃圾回收器
  2. -XX:MaxGCPauseMillis=N:设置最大停顿时间
  3. -XX:G1HeapRegionSize=N:设置每个region的大小,范围在1-32m,是2的幂次方
  4. -XX:ParallelGCThreads=8:设置G1 GC回收线程数
  5. -XX:ConcGCThreads:并发标记阶段,设置gc 工作线程数量
  6. -XX:InitiatingHeapOccupancyPercent:默认是45%,这个占比跟并发周期的启动相关,当空间占比达到这个值时,会启动并发周期。如果经常出现FullGC,可以调低该值,尽早的回收可以减少FullGC的触发,但如果过低,则并发阶段会更加频繁,降低应用的吞吐。
  7. .-XX:G1MixedGCLiveThresholdPercent:在混合垃圾收集周期中的old region的占用阈值,默认值为85,意思是如果一个Old Region中的存活对象大于Region大小的85%的话,就不去回收这个Region,不加入Cset。否则回收时将85%的存活对象放入另一个Region中,得不偿失。
  8. -XX:G1MixedGCCountTarget = 8:设置在标记周期完成之后混合收集的次数,默认是8次。如果单次回收CSet + 年轻代时间远远超过最大停顿时间,则会触发多次mixed GC每次回收部分CSet,以达到最大停顿时间目的
  9. -XX:G1HeapWastePercent=5:设置浪费的堆内存百分比,当可回收百分比小于浪费百分比时,JVM就不会启动混合垃圾收。也就是并发标记后,并不一定会触发mixed GC。

3.CMS配置

  1. -XX:+UseConcMarkSweepGC:使用cms垃圾回收器
  2. -XX:CMSInitiatingOccu-pancyFraction:cms收集器触发的阈值

4.Paraller配置

  1. -XX:+UseAdaptiveSizePolicy:自适应
  2. -XX:MaxGCPauseMillis=100 :控制最大垃圾收集停顿时间的参数。
  3. -XX:GCTimeRatio=19 :直接设置吞吐量大小的参数。
  4. -XX:+UseParallelOldGC:使用parallel scavenge + parallel old

5.GC 日志

  1. -XX:+PrintGCApplicationStoppedTime:打印用户线程stw的时间
  2. -XX:+PrintGCDetails:打印GC日志详细信息
  3. XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
  4. -XX:+PrintSafepointStatistics + -XX:PrintSafepointStatisticsCount=1:查看安全点日志

猜你喜欢

转载自blog.csdn.net/weixin_44981707/article/details/112686653
今日推荐