作者:刘刚michaelup_340 | 来源:互联网 | 2023-09-16 09:12
篇首语:本文由编程笔记#小编为大家整理,主要介绍了JVM运行时参数详解相关的知识,希望对你有一定的参考价值。
1.参数选项类型
-
以-
开头的参数选项
也叫作标准参数选项,这些参数比较稳定,基本不会随着JDK版本的改变而变化
可以使用java -help
指令在CMD命令行查看都有哪些参数选项:
-
以-X
开头的参数选项
也叫作非标准参数选项,这些参数相对也比较稳定,但是可能会随着JDK版本的改变而变化
可以使用java -X
指令在CMD命令行查看都有哪些参数选项:
-
以-XX
开头的参数选项
也叫作非标准参数选项,这些参数比较不稳定,但是使用最多,用于开发和调试JVM
-XX:&#43;<option>
-XX:-<option>
-XX:<option>&#61;<number>
-XX:<option>&#61;<string>
2.常用参数选项
-
打印相关
-XX:&#43;PrintCommandLineFlags
打印由用户设置或者JVM自动设置的参数选项-XX:&#43;PrintFlagsInitial
打印所有参数选项的默认值-XX:&#43;PrintFlagsFinal
打印所有参数选项的生效值-XX:&#43;PrintVMOptions
打印JVM参数
-
堆相关
-Xms100m
设置JVM初始堆内存的大小-Xmx100m
设置JVM最大堆内存的大小-XX:InitialHeapSize&#61;100m
设置JVM初始堆内存的大小-XX:MaxHeapSize&#61;100m
设置JVM最大堆内存的大小-Xmn1g
设置年轻代的内存大小&#xff0c;推荐调整为整个堆大小的3/8-XX:NewSize&#61;1g
设置年轻代初始的内存大小-XX:MaxNewSize&#61;1g
设置年轻代最大的内存大小-XX:SurvivorRatio&#61;8
设置年轻代中Eden区和Survivor区的比例-XX:NewRatio&#61;4
设置年轻代与老年代的比例-XX:&#43;UseAdaptiveSizePolicy
是否开启自动分配内存大小比例-XX:PretenureSizeThreadshold&#61;1024
设置大于指定字节大小的对象直接分配在老年代-XX:MaxTenuringThreshold&#61;15
设置在Survivor区存活对象的年龄最大值-XX:&#43;OrintTenuringDistribution
在进行MinorGC后&#xff0c;打印当前Survivor区中各个对象的年龄-XX:TargetSurvivorRatio&#61;5
设置在进行MinorGC后&#xff0c;Survivor区占用空间的期望大小
-
栈相关
-Xss128k
设置每个线程的栈大小-XX:ThreadStackSize&#61;128k
设置每个线程的栈大小
-
方法区相关
-XX:PermSize&#61;256m
设置永久代初始大小-XX:MaxPermSize&#61;256m
设置永久代最大大小-XX:MetaspaceSize&#61;256m
设置元空间初始大小-XX:MaxMetaspaceSize&#61;256m
设置元空间的最大大小-XX:&#43;UseCompressedOops
是否启用压缩对象指针-XX:&#43;UseCompressedClassPointers
是否启用压缩类指针-XX:CompressedClassSpaceSize&#61;1g
设置压缩元空间的大小-XX:MaxDirectMemorySize
设置直接内存的大小&#xff0c;默认和Java的堆空间大小一样
-
内存溢出相关
-XX:&#43;HeapDumpOnOutOfMemoryError
当出现内存溢出时&#xff0c;生成一次堆存储文件-XX:&#43;HeapDumpBeforeFullGC
在出现FullGC之前&#xff0c;生成一次堆转储文件-XX:HeapDumpPath
设置堆转储文件的保存路径-XX:OnOutOfMemoryError
指定一个可执行程序路径&#xff0c;当出现内存溢出时执行它。
-
垃圾收集器相关
-
-XX:MaxGCPauseMillis
设置垃圾收集器的最大停顿时间
-
-XX:GCTimeRatio
设置垃圾收集器收集的时间占总时间的比例
-
-XX:ParallelGCThreads&#61;n
设置年轻代中并行垃圾收集器执行时的线程数量
-
-XX:&#43;UseSerialGC
指定年轻代和老年代都使用Serial串行垃圾收集器
-
-XX:&#43;UseParNewGC
指定年轻代使用ParNew并行垃圾收集器
-
-XX:&#43;UseParallelGC
指定年轻代使用Parallel并行垃圾收集器
-
-XX:&#43;UseParallelOldGC
指定老年代使用Parallel Old并行垃圾收集器
-
-XX:&#43;UseConcMarkSweepGC
指定老年代使用CMS垃圾搜集器&#xff0c;然后年轻代启用ParNew
-
-XX:CMSInitiatingOccupanyFraction
设置CMS垃圾收集器中堆内存使用率的阈值&#xff0c;如果超出&#xff0c;则进行回收
-
-XX:&#43;UseCMSCompactAtFullCollection
设置CMS垃圾收集器当进行FullGC之后&#xff0c;对内存空间进行压缩整理
-
-XX:CMSFullGCsBeforeCompaction
设置CMS垃圾收集器在执行多少次FullGC后&#xff0c;对内存空间进行压缩整理
-
-XX:ParallelCMSThreads
设置CMS垃圾收集器收集时的线程数量
-
-XX:&#43;UseG1GC
指定年轻代和老年代都使用G1垃圾收集器
-
-XX:G1HeapRegionSize
设置G1垃圾收集器中每个Region的大小&#xff0c;默认是堆内存大小的1/2000
-
-XX:ParallelGCThread
设置G1垃圾收集器在进行STW时GC线程的数量
-
-XX:ConcGCThreads
设置G1垃圾收集器并发标记的线程数
-
-XX:InitiatingHeapOccupanyPercent
设置触发G1垃圾收集器进行GC的堆空间占用率
-
-XX:G1NewSizePercent
设置G1垃圾收集器中年轻代占用整个堆内存的最小百分比
-
-XX:G1MaxNewSizePercent
设置G1垃圾收集器中年轻代占用整个堆内存的最大百分比
-
-XX:G1ReservePercent
设置G1垃圾收集器中保留的内存区域个数
-
垃圾收集日志相关
-verbose:gc
输出简化的GC日志信息&#xff0c;可以独立使用-XX:&#43;PrintGC
输出简化的GC日志信息&#xff0c;可以独立使用-XX:&#43;PrintGCDetails
输出详细的GC日志信息&#xff0c;可以独立使用-XX:&#43;PrintGCTimeStamps
输出GC发生的时间&#xff0c;需要配合前面三种指令中的一种-XX:&#43;PrintGCDateStamps
输出GC发生的日期&#xff0c;需要配合前面三种指令中的一种-XX:&#43;PrintHeapAtGC
在每一次进行GC之前和之后&#xff0c;都输出GC日志信息-Xloggc:filepath
将GC日志信息输出到指定文件-XX:&#43;TraceClassLoading
监控类的加载-XX:&#43;PrintGCApplicationStoppedTime
输出GC时线程的停顿时间-XX:&#43;PrintGCApplicationConcurrentTime
输出垃圾收集之前应用未中断的执行时间-XX:&#43;PrintReferenceGC
输出回收了多少种不同引用类型的引用-XX:&#43;PrintTenuringDistribution
输出每次MinorGC后&#xff0c;当前的Survivor区中对象的年龄分布-XX:&#43;UseGCLogFileRotation
是否启用GC日志文件的自动转储-XX:NumberOfGCLogFiles&#61;1
设置GC日志文件的循环数目-XX:GCLogFileSize&#61;1m
设置GC日志文件的最大存储大小
-
其它
-XX:&#43;DisabledExplicitGC
是否禁止HotSpot虚拟机执行System.gc方法-XX:ReservedCodeCacheSize&#61;n
设置代码缓存的大小-XX:&#43;UseCodeCacheFlushing
是否启用代码缓存刷新-XX:&#43;DoEscapeAnalysis
是否启用逃逸分析-XX:&#43;UseBiasedLocking
是否启用偏向锁-XX:&#43;UseLargePages
是否启用大页面-XX:&#43;UseTLAB
是否启用TLAB-XX:&#43;PrintTLAB
输出TLAB的使用情况-XX:TLABSize
设置TLAB的大小
3.添加参数选项
-
在Eclipse中
-
在IDEA中
-
在命令行中
java -jar xxx.jar -Xms100m -Xmx100m
-
在Tomcat中
JAVA_OPTS&#61;"-Xms100m -Xmx100m"
set "JAVA_OPTS&#61;-Xms100m -Xmx100m"
-
在程序运行中
jinfo -flag <&#43;|-><option> <pid>
jinfo -flag <option>&#61;<value> <pid>
不过只允许修改其中某些参数选项&#xff1a;