JVM探秘:JVM的参数类型

JVM的参数类型,大致可以分为标准参数、X参数、XX参数,而XX参数又可以分为Boolean类型、非Boolean类型。

标准参数

标准参数就是各个JVM的版本中不变的,相对稳定的参数。
例如:

1
2
3
4
5
6
7
-help  
-server
-client
-version
-showversion
-cp
-classpath

X参数

X参数是非标准化参数,也是相对不稳定的参数。
例如:

1
2
3
-Xint:解释执行
-Xcomp:第一次使用就编译成本地代码
-Xmixed:混合模式,JVM自己决定是否编译成本地代码

如下图所示,默认是-Xmixed:

image

XX参数

XX参同样是非标准化的参数,相对不稳定,主要用于JVM调优和Debug。

XX参数分为Boolean类型和非Boolean类型。

Boolean类型

格式:-XX:[+-]<name> 表示启用或者禁用name属性。
例如:

1
2
-XX:+UseConcMarkSweepGC  
-XX:+UseG1GC

非Boolean类型

格式:-XX:<name>=<value> 表示name属性的值是value。
例如:

1
2
-XX:MaxGCPauseMillis=500  
-XX:GCTimeRatio=19

还有一些特例参数,例如:

1
2
3
-Xms
-Xmx
-Xss

这三个参数虽然以X开头,但不是X参数,而是XX参数。

-Xms 等价于-XX:InitialHeapSize,设置初始化堆大小。
-Xmx 等价于-XX:MaxHeapSize,设置堆最大大小。
-Xss 等价于-XX:ThreadStackSize,设置线程虚拟机栈的大小。

如下图所示,使用jinfo命令,指定pid,可以查看着三个参数的默认大小。

image