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


    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不再支持
  • 相关阅读:
    Python——Python基础编程题目
    python毕业设计基于flask应急救援调度系统django
    MySQL 执行 Online DDL 操作报错空间不足?
    Unity移动端游戏性能优化简谱之 以引擎模块为划分的CPU耗时调优
    crondtab定时任务%字符无法识别的处理
    力扣225.用队列实现栈
    信息系统项目管理-项目合同管理-十三
    【Unity基础】6.动画状态机
    并行多核体系结构基础 Yan Solihin 第4章 针对链式数据结构的并行 摘录
    【Qt之QAssociativeIterable】使用
  • 原文地址:https://blog.csdn.net/qq330983778/article/details/127644300