欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

JVM运行时参数大全

时间:2023-06-20
JVM运行时参数 jvm参数选项类型

-X参数选项

特点

 非标准化参数 功能还是比较稳定的。官方说后序可能变更 以-X开头

-Xint

 禁用JIT,所有字节码都被解释执行,这个模式的速度是最慢的

Xcomp

 所有字节码第一次使用就都被编译成本地代码,然后再执行

Xmixed

 混合模式,默认模式,让JIT根据程序运行的情况,有选择地将某些代码编译成本地代码

Xms

 设置初始Java堆的大小,等价于-XX:InitialHeapSize

Xmx

 设置最大Java堆大小,等价于-XX:MaxHeapSize

-Xss

 设置Java线程堆栈大小,-XX:ThreadStackSize

-XX参数选项

特点

 非标准化参数 使用最多的参数类型 这类选项属于实验性,不稳定 以-XX开头

作用

 用于开发和调试JVM

分类

Boolean类型格式

 -XX:+

非Boolean类型格式(key-value类型)

 子类型1:数值型格式-XX:

特别地

-XX:+PrintFlagsFinal

 输出所有参数的名称和默认值 默认不包括Diagnostic和Experimental的参数 可以配合-XX:+UnlockDiagnosticVMOptions和-XX:UnlockExperimentalVMOptions使用

添加JVM参数选项

运行jar包

 java -Xms50m -Xmx: 50m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps - jar demo 、jar

通过Tomcat运行war包

 Linux系统下可以在tomcat/bin/catalina.sh中添加类似如下配置:JAVA_OPTS="-Xms512M -Xmx1024M" Windows系统下在catalina.bat中添加类似如下配置:set"JAVA_OPTS=-Xms512M -Xmx1024M"

程序运行过程中

 使用jinfo -flag = 设置非Boolean类型参数 使用jinfo -flag [+|-] 设置Boolean类型参数

常用的JVM参数选项

打印设置的XX选项及值

-XX:+PrintCommandLineFlags

 可以让在程序运行前打印出用户手动设置或者JVM自动设置的XX选项

-XX:+PrintFlagsInitial

 表示打印出所有XX选项的默认值

-XX:+PrintFlagsFinal

 表示打印出XX选项在运行程序时生效的值

-XX:+PrintVMOptions

 打印JVM的参数

堆、栈、方法区等内存大小设置

-Xss 128k

 设置每个线程的栈大小为128k 等价于 -XX:ThreadStackSize = 128k

堆内存

-Xms3550m

 等价于-XX:InitialHeapSize,设置JVM初始堆内存为3550m

-Xmx3550m

 等价于-XX:MaxHeapSize,设置JVM最大堆内存为3550m

-Xmn2g

 设置年轻代大小为2G 官方推荐配置为整个堆大小的3/8

-XX:NewSize=1024m

 设置年轻代初始值为1024m

-XX:MaxNewSize=1024m

 设置年轻代最大值为1024m

-XX:SurvivorRatio=8

 设置年轻代中Eden区与一个Survivor区的比值,默认为8

-XX:+UseAdaptiveSizePolicy

 自动选择各区大小比例

-XX:NewRatio=4

 设置老年代与年轻代(包括1个Eden和2个Survivor区)的比值

-XX:PretenureSizeThreadshold=1024

 设置让大于此阈值的对象直接分配在老年代,单位为字节 只对Serial、ParNew收集器有效

-XX:MaxTenuringThreshold=15

 默认值为15 新生代每次MinorGC后,还存活的对象年龄+1,当对象的年龄大于设置的这个值时就进入老年代

-XX:+PrintTenuringDistribution

 让JVM在每次MinorGC后打印出当前使用的Survivor中对象的年龄分布

-XX:TargetSurvivorRation

 表示MinorGC结束后Survivor区域中占用空间的期望比例

方法区

永久代

-XX:PermSize=256m

 设置永久代初始值为256m

-XX:MaxPermSize=256m

 设置永久代最大值为256m

元空间

XX:metaspaceSize

 初始空间大小

-XX:MaxmetaspaceSize

 最大空间,默认没有限制

-XX:+UseCompressedOops

 压缩对象指针

XX:+UseCompressedClassPointers

 压缩类指针

-XX:CompressedClassSpaceSize

 设置Klass metaspace的大小,默认1G

直接内存

XX:MaxDirectMemorySize

 指定DirectMemory容量,若未指定,则与Java堆最大值一样

OutofMemory相关的选项

-XX:+HeapDumpOnOutOfMemoryError

 表示在内存出现OOM的时候,把Heap转存(Dump)到文件以便后续分析

-XX:+HeapDumpBeforeFullGC

 表示在出现FulIGC之前,生成Heap转储文件

-XX:HeapDumpPath=

 指定heap转存文件的存储路径

-XX:OnOutOfMemoryError

 指定一个可行性程序或者脚本的路径,当发生OOM的时候,去执行这个脚本

GC日志相关选项

常用参数

-verbose:gc

 输出gc日志信息,默认输出到标准输出 可以独立使用

-XX:+PrintGC

 等同于-verbose:gc表示打开简化的GC日志 可以独立使用

XX:+PrintGCDetails

 在发生垃圾回收时打印内存回收详细的日志,并在进程退出时输出当前内存各区域分配情况 可以独立使用

XX:+PrintGCTimeStamps

 输出GC发生时的时间戳 不可以独立使用,需要配合-XX:+PrintGCDetails使用

XX:+PrintGCDateStamps

 输出GC发生时的时间戳(以日期的形式,如2013-05-04T21:53:59.234+0800) 不可以独立使用,需要配合-XX:+PrintGCDetails使用

-XX:+PrintHeapAtGC

 每一次GC前和GC后,都打印堆信息 可以独立使用

Xloggc:

 把GC日志写入到一个文件中去,而不是打印到标准输出中

其他参数

-XX:+TraceClassLoading

 控制类的加载

-XX:+PrintGCApplicationStoppedTime

 打印GC时线程的停顿时间

-XX:+PrintGCApplicationConcurrentTime

 垃圾收集之前打印出应用未中断的执行时间

-XX:+PrintReferenceGC

 记录回收了多少种不同引用类型的引用

-XX:+PrintTenuringDistribution

 让JVM在MinorGC后打印出当前使用的Survior中对象的年龄分布

-XX:+UseGCLogFileRotation

 启用GC日志文件的自动转储

-XX:NumberOfGClogFiles=1

 GC日志文件的循环数目

-XX:GCLogFileSize=1M

 控制GC日志文件的大小

其他参数

-XX:+DisableExplicitGC

 禁止hotspot执行System.gc(),默认禁用

-XX:ReservedCodeCacheSize=[g|m|k]、-XX:InitialCodeCacheSize=[g|m|k]

 指定代码缓存的大小

-XX:+UseCodeCacheFlushing

 使用该参数让jvm放弃一些被编译的代码, 避免代码缓存被占满时JVM切换到interpreted-only的情况

-XX:+DoEscapeAnalysis

 开启逃逸分析

-XX:+UseBiasedLocking

 开启偏向锁

-XX:+UseLargePages

 开启使用大页面

-XX:+UseTLAB

 使用TLAB,默认打开

-XX:+PrintTLAB

 打印TLAB的使用情况

-XX:TLABSize

 设置TLAB大小

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。