JVM性能——JVM调优参数列表

14 篇文章 1 订阅

JVM性能——JVM调优参数列表

下面内容是介绍在进行JVM GC优化的时候可能用到的参数

关于JVM的其他文章

JVM性能——垃圾回收器的优化策略

JVM性能——垃圾回收器的介绍

JVM性能——开启回收日志和实时查看GC信息

JVM性能——JVM调优参数列表


GC使用参数

这部分主要是介绍使用不同回收器应该使用的参数配置

参数说明使用
-XX:+UseSerialGC一个基础简单的单线程GC算法用于单核或者容器中,或者小于100MB的堆
-XX:+UseParallelGCJDK1.4的垃圾收集器,使用多线程进行GC的算法用于优化吞吐而不是响应速度时使用,JDK8中默认
-XX:+UseConcMarkSweepGCJDK1.5的垃圾收集器版本优化响应速度的场景。如果使用的JDK8,建议使用G1。
-XX:+UseG1GCJDK11的垃圾收集器版本,以及移植回1.8版本在服务器停顿时使用多个线程回收新生代,并使用后台参数尽可能短停顿从老年代回收垃圾如果服务CPU资源充足,并且不希望有较长的停顿。JDK11默认
-XX:+UseParNewGCSerial收集器的多线程版本,配合CMS使用的新生代GC算法优化响应速度的场景。如果使用的JDK8,建议使用G1。
-XX:+UseZGC使用实验性的Z垃圾回收器,JDK12使用实验性GC
-XX:+UseShenandoahGC使用实验性的Shenandoah垃圾回收器,OpenJDK12使用实验性GC
-XX:+UseEpsilonGC使用实验性的Epsilon垃圾回收器,JDK12使用内部测试才会使用的GC

GC日志参数

下面参数是打开GC日志,并配置需要的日志内容时候需要的参数

参数使用说明使用实际
-Xlog:gc*开启GC日志即使生产环境也最好开启GC日志
-verbose:gc开启基本日志最好开启GC日志,但是基本日志可能看不出什么内容
-Xloggc: 日志输出到文件中,而不是标准输出指定一个专门的地址保存GC信息
-XX:+PrintGC开启GC日志基本输出最好开启GC日志,但是基本日志可能看不出什么内容
-XX:+PrintGCDetails开启GC日志详细输出最好开启GC日志
-XX:+PrintGCTimeStamps开启GC日志相对时间戳开启时间戳会更方便的判断GC情况
-XX:+PrintGCDateStamps开启GC日志日期时间戳开启时间戳会更方便的判断GC情况
-XX:+PrintReferenceGC开启GC过程中软引用和弱引用的处理信息开启这个参数可以通过日志判断这些引用的处理效率
-XX:+UseGCLogFileRotation开启GC滚动日志如果预见GC日志会消耗大量空间,最好开启此配置
-XX:NumberOfGCLogFiles=N设置滚动给日志时日志数量如果预见GC日志会消耗大量空间,最好设置此参数
-XX:GCLogFileSize=N设置滚动日志时日志大小如果预见GC日志会消耗大量空间,最好设置此参数

GC通用参数

这部分参数主要是对JVM的堆的一些调整,在JDK8版本下使用任意回收器都可以配置的参数

参数使用说明使用实际
-Xms设置堆的初始大小
-Xmx设置堆的最大大小
-Xmn设置新生代的初始大小和最大的大小需要微调堆内存时
-XX:NewRation设置新生代和老年代的比例增加它的值可以减少新生代的内存。
-XX:NewSize设置新生代的初始大小需要微调堆内存时
-XX:MaxNewSize设置新生代的最大大小需要微调堆内存时
-XX:MetaspaceSize=N设置元空间的大小对于使用大量类的非应用程序可以在默认值的基础上增加这个值
-XX:MaxMetaspaceSize=N设置元空间的最大大小用来限制元空间使用原生内存的大小
-XX:ParallelGCThreads=N设置垃圾回收器并行阶段使用的线程数
-XX:+UseAdaptiveSizePolicy设置这个这个参数后JVM将调整各种堆的大小,满足GC目标这个参数默认打开,如果决定自己优化堆的大小可以关闭这个参数
-XX:+PrintAdaptiveSizePolicyGC日志中添加关于分代大小调整的信息可以分析使用G1的时候,检查巨型对象的分配是否触发Full GC
-XX:+PrintTenuringDistributionGC日志中添加对象的年龄分布根据对象的年龄分布来判断是否应该调整与对象晋升有关的参数
-XX:InitialSurvivorRatio=N设置垃圾收集器使用的Survivor空间比率如果对象频繁晋升老年代,应该减少此参数
-XX:MinSurvivorRatio=N设置垃圾收集器使用的Survivor空间比率的自适应量。表示在GC之后,如果需要重新计算survivor的值,survivor的新值不能低于根据它计算出来的值。
-XX:TargetSurvivorRatio=NJVM试图在Survivor空间中保留的空闲空间增大此参数会减少Survivor空间的最大大小
-XX:InitialTenuringThreshold=NJVM试图将对象保留在Survivor空间中的周期数增大该值可以延长对象保留在Survivor空间的时间
-XX:MaxTenuringThreshold=NJVM试图将对象保留在Survivor空间中的最大周期数增大该值可以延长对象保留在Survivor空间的时间
-XX:+DisableExplicitGC手动调用System.gc()不会生效组织显式的调用System.gc()
-XX:-AggressiveHeap启动默认的调优策略回启动一系列的优化设置,但并不一定符合实际要求

回收器的特殊参数

这部分是针对不同的回收器需要设置不同的优化参数

Parallel回收器

参数使用说明使用实际
-XX:MaxGCPauseMillis=N每次年轻代垃圾回收的最长时间(最大暂停时间)发现默认值无法满足GC需要时
-XX:GCTimeRatio=N设置垃圾回收时间占程序运行时间的百分比发现默认值无法满足GC需要时

G1回收器

参数使用说明使用实际
-XX:MaxGCPauseMillis=N设置G1回收器停顿时间可以尝试增加这个值防止Full GC
-XX:ConcGCThreads=N设置G1后台扫描的线程数当有足够的CPU使用,且G1遇到并发失败的时候
-XX:InitiatingHeapOccupancyPercent=NG1开始进行后台扫描的时机G1遇到并发失败的时候,调小这个参数,提前进入并发周期
-XX:G1MixedGCCountTarget=NMixed GC的次数如果Mixed GC周期花费大量时间可以增大这个值
-XX:G1HeapRegionSize=N设置G1区域大小当有非常大的堆,或者当应用分配非常大的对象时可以增加此数据
-XX:UseStringDedupLication让G1去除重复字符串当程序有大量重复字段

CMS回收器

参数使用说明使用实际
-XX:CMSInitiatingOccupancyFraction=N设置CMS开始老年代扫描的时机CMS遇到并发失败的时候,调小这个参数,提前进入并发周期
-XX:+UseCmsInitiatingOccupancyOnly让CMS使用CMSInitiatingOccupancyFraction来决定何时开始后台扫描CMSInitiatingOccupancyFraction一起使用
-XX:ConcGCThreads=N设置CMS后台扫描的线程数当有足够的CPU使用,且CMS遇到并发失败的时候
-XX:+CMSIncrementalMode=N以增量模式运行CMS不再支持
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大·风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值