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 进程的,相关参数,可以在下面的文档里查阅