参数类型
1. 标准参数
在Java的各个版本中相对比较稳定的,基本不变的。
- -help
- -server -client
- -version -showversion
- -cp -classpath
2. X参数
X参数也叫非标准化参数,也就是在各个JVM版本中有可能会变,但是变化比较小。
- -Xint:解释执行
- 即Java代码完全解释执行,这样会降低效率(据说是10倍左右)
- -Xcomp:第一次使用就编译成本地代码
- 意味着JVM在第一次使用时会把所有的字节码编译成本地代码 从而带来最大程度的优化,虽然比-Xint的效率要高,但是它没有让JVM启动JIT编译器的全部功能, JIT编译器一般会在运行时创建方法使用文件 然后一步步的优化每个方法,因此该指令还是会造成一定的效率衰减
- -Xmixed:混合模式(默认),JVM自己来决定是否编译成本地代码
这里可以看出默认是开启了混合模式:
3. XX参数
XX参数是用的比较多的,相对不稳定,常用作JVM调优。
主要有两种类型:
- Boolean类型
格式:-XX:[+-]<name> 表示启用或者禁用name属性
比如:-XX:+UseConcMarkSweepGC
-XX:+UseG1GC
- 非Boolean类型
格式:-XX:<name>=<value> 表示name属性的值是value
比如:-XX:MaxGCPauseMills=500
XX:GCTimeRatio=19
还有我们常用的-Xms、-Xmx和-Xss,也是属于XX参数:
-Xms等价于-XX:InitialHeapSize(设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存)
-Xmx等价于-XX:MaxHeapSize(设置JVM最大堆内存)
-Xss等价于-XX:ThreadStackSize(每个线程的栈大小)
这里启动一个Tomcat,然后查看运行时这些参数的值:
更多参数详解可参看:JVM参数设置大全