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

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

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

关于JVM的其他文章

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

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

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

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


GC使用参数

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

参数 说明 使用
-XX:+UseSerialGC 一个基础简单的单线程GC算法 用于单核或者容器中,或者小于100MB的堆
-XX:+UseParallelGC JDK1.4的垃圾收集器,使用多线程进行GC的算法 用于优化吞吐而不是响应速度时使用,JDK8中默认
-XX:+UseConcMarkSweepGC JDK1.5的垃圾收集器版本 优化响应速度的场景。如果使用的JDK8,建议使用G1。
-XX:+UseG1GC JDK11的垃圾收集器版本,以及移植回1.8版本在服务器停顿时使用多个线程回收新生代,并使用后台参数尽可能短停顿从老年代回收垃圾 如果服务CPU资源充足,并且不希望有较长的停顿。JDK11默认
-XX:+UseParNewGC Serial收集器的多线程版本,配合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:+PrintAdaptiveSizePolicy GC日志中添加关于分代大小调整的信息 可以分析使用G1的时候,检查巨型对象的分配是否触发Full GC
-XX:+PrintTenuringDistribution GC日志中添加对象的年龄分布 根据对象的年龄分布来判断是否应该调整与对象晋升有关的参数
-XX:InitialSurvivorRatio=N 设置垃圾收集器使用的Survivor空间比率 如果对象频繁晋升老年代,应该减少此参数
-XX:MinSurvivorRatio=N 设置垃圾收集器使用的Survivor空间比率的自适应量。表示在GC之后,如果需要重新计算survivor的值,survivor的新值不能低于根据它计算出来的值。
-XX:TargetSurvivorRatio=N JVM试图在Survivor空间中保留的空闲空间 增大此参数会减少Survivor空间的最大大小
-XX:InitialTenuringThreshold=N JVM试图将对象保留在Survivor空间中的周期数 增大该值可以延长对象保留在Survivor空间的时间
-XX:MaxTenuringThreshold=N JVM试图将对象保留在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=N G1开始进行后台扫描的时机 G1遇到并发失败的时候,调小这个参数,提前进入并发周期
-XX:G1MixedGCCountTarget=N Mixed 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 不再支持

你可能感兴趣的:(#,JVM,JAVA,jvm,java,算法)