JVM运行时参数
JVM参数选项类型
类型一:标准参数选项
- 特点
比较稳定,后续版本基本不会变化。以 " - " 开头。
- 选项详情
运行java
或者java -help
可以看到所有的标准选项
类型二:-X参数选项
- 特点
非标准化参数,功能还是比较稳定的,但官方说后续版本可能会变更。以 " -X " 开头。
- 选项详情
运行java -X
命令可以看到所有的X选项
- JVM的JIT编译模式相关的选项
参数 | 说明 |
---|---|
-Xint | 禁用JIT,所有字节码都被解释执行,这个模式的速度是最慢的 |
-Xcomp | 所有字节码第一次使用就都被编译成本地代码,然后再执行 |
-Xmixed | 混合模式,默认模式,让JIT根据程序运行的情况,有选择地将某些代码编译成本地代码 |
- -Xmx、-Xms、-Xss属于 -XX选项参数?
参数 | 说明 |
---|---|
-Xms<size> | 设置初始Java堆大小,等价于 -XX:InitialHeapSize |
-Xmx<size> | 设置最大Java堆大小,等价于 -XX:MaxHeapSize |
-Xss<size> | 设置Java线程堆栈大小, -XX:ThreadStackSize |
类型三:-XX参数选项
- 特点
非标准化参数,使用的最多的参数类型。这类选项属于实验性,不稳定。以 " -XX "开头。
- 作用
用于开发和调试JVM
- Boolean类型格式
-XX:+<option>:表示启用option属性
-XX:-<option>:表示禁用option属性
# 选择垃圾收集器为并行收集器 -XX:+UseParallelGC # 表示启用G1收集器 -XX:+UseG1GC # 自动选择年轻代区大小和响应的Survivor区比例 -XX:+UseAdaptiveSizePolicy
- 非Boolean类型格式(key-value类型)
子类型1:数值型格式 -XX:<option>=<number>
number表示数值,number可以带上单位,比如:'m'、'M'表示兆,'k'、'K'表示Kb,'g'、'G'表示g(例如 32k跟32768是一样的效果)
示例:
-XX:NewSize=1024m 表示设置新生代初始大小为1024兆
-XX:MaxGCPauseMillis=500 表示设置GC停顿时间:500毫秒
-XX:GCTimeRatio=19 表示设置吞吐量
-XX:NewRatio=2 表示新生代与老年代的比例
子类型2:非数值型格式 -XX:<name>=<string>
示例:
-XX:HeapDumpPath=/usr/local/heapdump.hprof
用来指定heap转存文件的存储路径
- -XX:+PrintFlagFinal
输出所有参数的名称和默认值
默认不包括Diagnostic和Experimental的参数
可以配合
-XX:+UnlockDiagnosticVMOptions
和-XX:UnlockExperimentalVMOptions
使用
添加JVM参数选项
IDEA
运行jar包
java -Xms50m -Xmx50m -XX:+PrintGCDetails -XX:+PrintTGCTimeStamps -jar demo.jar
通过Tomcat运行war包
Linux系统下可以在 tomcat/bin/catalina.sh中添加类似如下配置:
JAVA_OPTS="-Xms512M -Xmx1024M"
Windows系统下载catalina.bat中添加类似如下配置:
set "JAVA_OPTS=-Xms512M -Xmx1024M"
程序运行过程中
使用jinfo -flag <name>=<value> <pid>
设置非Boolean类型参数
使用jinfo -flag [+|-]<name> <pid>
设置Boolean类型参数
常用的JVM参数选项
本文来自博客园,作者:Lz_蚂蚱,转载请注明原文链接:https://www.cnblogs.com/leizia/p/17012446.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步