参数类型

1. 标准参数

在Java的各个版本中相对比较稳定的,基本不变的。

  • -help
  • -server -client
  • -version -showversion
  • -cp -classpath

JVM 参数_本地代码

2. X参数

X参数也叫非标准化参数,也就是在各个JVM版本中有可能会变,但是变化比较小。

  • -Xint:解释执行
  • 即Java代码完全解释执行,这样会降低效率(据说是10倍左右)
  • -Xcomp:第一次使用就编译成本地代码
  • 意味着JVM在第一次使用时会把所有的字节码编译成本地代码 从而带来最大程度的优化,虽然比-Xint的效率要高,但是它没有让JVM启动JIT编译器的全部功能, JIT编译器一般会在运行时创建方法使用文件 然后一步步的优化每个方法,因此该指令还是会造成一定的效率衰减
  • -Xmixed:混合模式(默认),JVM自己来决定是否编译成本地代码

这里可以看出默认是开启了混合模式:

JVM 参数_Java_02

JVM 参数_JVM_03

JVM 参数_本地代码_04

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 参数_JVM_05

JVM 参数_本地代码_06

JVM 参数_Java_07

更多参数详解可参看:​​JVM参数设置大全​​