JVM参数选项类型
标准参数选项
特点
- 比较稳定,后续版本基本不会变化
- 以 – 开头
各种选项
运行java或者java -help可以看到所有的标准选项
补充内容
- -server与-client
-X参数选项
特点
- 非标准化参数
- 功能还是比较稳定的,但是官方说后续版本可能会变更(可能性比较小)
- 以 -X 开头
各种选项
运行java -X 命令可以看到所有的X选项
JVM的JIT编译模式相关的选项
- Xint
禁用JIT,所有字节码都被解释执行,这个模式的速度是最慢的。 - Xcomp
所有字节码第一次使用就被编译成本地代码,然后在执行。 - Xmixed
混合模式,默认模式,让JIT根据程序运行的情况,有选择的将某些代码编译成本地代码。
特别的
- -Xms
设置初始java堆大小,等价与-XX:InitialHeapSize - -Xmx
设置最大Java堆大小,等价于-XX:MaxHeapSize - -Xss
设置java线程堆栈大小,等价于-XX:ThreadStackSize
-XX参数选项
特点
- 非标准化参数
- 使用的最多的参数类型
- 这类选项属于实验性,不稳定
- 以 -XX 开头
作用
用于开发和调试JVM
分类
- Boolean类型格式
- -XX:+表示启用option属性
- -XX:-表示禁用option属性
- 举例
- 说明:因为有的指令默认是开启的,所有可以使用 – 关闭。
- 非Boolean类型格式(key-value类型)
- 类型1:数值型格式:-XX:=
- 类型2:非数值型格式:-XX:=
特别的
- -XX:+PrintFlagFinal
- 输出所有参数的名称和默认值
- 默认不包括Diagnostic和Experimental的参数
- 可以配合-XX:+UnlockDiagnosticVMOptions和-XX:+UnlockExperimentalVMOptions使用。
添加JVM参数选项
Eclipse
IDEA
编辑edit configuration参数即可。
运行jar包
java xxx -jar demo.jar
通过Tomcat运行war包
程序运行过程中
常用的JVM参数选项
打印设置的XX选项及值
- -XX:+PrintCommandLineFlags
可以让在程序运行前打印出用户手动设置或者JVM自动设置的XX选项。 - -XX:+PrintFlagsInitial
表示打印出所有XX选项的默认值。 - -XX:+PrintFlagsFinal
表示打印出XX选项在运行程序时生效的值 - -XX:+PrintVMOptions
打印JVM的参数
堆、栈、方法区等内存大小设置
栈
-Xss128k
设置每个线程的栈大小为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:NewRation=4
设置老年代与年轻代(包括1个Eden和2个Survivor区)的比值 - -XX:PretenureSizeThreadshold=1024
设置让大于此阈值的对象之间分配在老年代,单位为字节。
只对Serial、ParNew收集器有效 - -XX:MaxTenuringThreadshold=15
默认值15
新生代每次MinorGC后,还存活的对象年龄+1,当对象的年龄大于设置的这个值时就进入老年代。 - -XX:+PrintTenuringDistribution
让JVM在每次MinorGC后打印出当前使用的Survivor中对象的年龄分布。 - -XX:TargetSurvivorRatio
表示MinorGC结束后Survivor区域中占有空间的期望比例
方法区
永久代
- -XX:PermSize=256m
设置永久代初始值为256M,jdk8已经废弃改成元空间。 - -XX:MaxPermSize=256m
设置永久代最大值为256M
元空间
- -XX:MetaspaceSize
初始空间大小 - -XX:MaxMetaspaceSize
最大空间,默认没有限制 - -XX:+UseCompressedOops
压缩对象指针 - -XX:+UseCompressdClassPointers
压缩类指针 - -XX:CompressdClassSpaceSize
设置class Metaspace的大小,默认1G
直接内存
-XX:MaxDirectMemorySize
指定DirectMemory容量,若未指定,则默认与Java堆最大值一样
OutOfMemory相关的选项
- -XX:+HeapDumpOnOutOfMemoryError
表示在内存出现OOM的时候,把Heap转存(Dump)到文件以便后续分析 - -XX:+HeapDumpBeforeFullGC
表示在出现FullGC之前,生成Heap转储文件 - XX:HeapDumpPath=
指定heap转存文件的存储路径 - -XX:OnOutOfMemoryError
指定一个可行性程序或者脚本的路径,当发生OOM的时候,去执行这个脚本
垃圾收集相关选项
垃圾回收器查看
Serial回收器
ParNew回收器
Parallel回收器
CMS回收器
G1回收器
怎么选择垃圾回收器
GC日志相关选项
常用参数
- -verbose:gc
输出gc日志信息,默认输出到标准输出。 - -XX:+PrintGC
等同于-verbose:gc,表示打开简化的GC日志。 - -XX:+PrintGCDetails
在发生垃圾回收时打印内存回收详细的日志,并在进程退出时输出当前内存各区域分配情况。 - -XX:+PrintGCTimeStamps
输出GC发生时的时间戳 - -XX:+PrintGCDateStamps
输出GC发生时的时间戳(以日期的形式,如2013-05-04T21:53:59:234+0800) - -XX:+PrintHeapAtGC
每一次GC前和GC后,都打印堆信息 - -Xloggc:
把GC日志写入到一个文件中去,而不是打印到标准输出中
其他参数
其他参数
通过Java代码获取JVM参数
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/100377.html