JVM 参数类型
-
标注参数 [
在 JVM里 基本不变的,相对比较稳定
]
-sever
-help
-client
-version
-showversion
-cp
-classpath
-
x 参数 [
非标准化参数,就是在JVM 各个版本里可能会变
]
-Xint : 解释执行
-Xcomp : 第一次使用就编译成本地代码
-Xmixed : 混合模式,JVM 自己决定是否编译成本地代码
打开控制台,执行命令 java -version
, [前提是安装了 jdk
]可以看到 其默认是 mixed mode ,
java -xint -version
就可以看到是解释执行模式
x 参数平时用的不是很多
- xx 参数 [
xx 参数用的是非常多的参数, 同样是非标准化参数,主要用来 JVM 调优 和Debug
]
主要有2 类
1.boolean 类型
格式 : -XX:[+ -] < name >
表示启用或者禁用 name 属性
例如:-XX: +UseG1GC
启用 G1收集器
2.非boolean 类型
格式:-XX: < name > = < value >
表示 name 属性的值 是 value
例如:-XX:MaxGCPauseMillis=500
表示GC 的最大停顿时间是 500 毫秒
做过Java 开发的朋友应该都设置过 -Xms -Xmx,它们同样是 -xx 参数
-Xms
等价于 -XX:InitialHeapSize
初始化的大小
-Xmx
等价于-xx: MaxHeapSize
最大的大小
-xss
xx 参数 ,用于设置 堆栈大小 ,Tomcat 默认是 1024 k,当启动一个 tomcat 之后 ,控制台输入 jinfo -flag ThreadStackSize Tomcat 进程ID
例如 : jinfo -flag ThreadStackSize 23455
, 就可以看到输出 -XX:ThreadStackSize=1024
查看JVM 运行时参数的值
这对于JVM 调优很重要。
-XX: +PrintFlagsInitial
查看一些初始值 1️⃣-XX: + PrintFlagsFinal
查看最终的值 2️⃣
控制台输入java -XX:+PrintFlagsFinal -version
, 控制台会输出一堆的数据 ,可以看到有=
,:=
,两者区别是 前者是 默认的值,后者是设置的值 ,如图
-xx:+UnlockExprimentaIVMOptions
解锁实验参数 ,这是是说 JVM 里的参数不是都可以通过1️⃣2️⃣的两个来直接赋值,需要解锁相关之后,才能进行复制操作 。-XX: + PrintCommandLineFlags
打印命令行参数-XX: + UnlockDiagnosticVMOptions
解锁诊断参数
jps
jps 是用来专门查看 Java 进程的,相关参数,可以在下面的文档里查阅