本系列笔记主要基于《深入理解Java虚拟机:JVM高级特性与最佳实践 第2版》,是这本书的读书笔记。
JVM的参数类型,大致可以分为标准参数、X参数、XX参数,而XX参数又可以分为Boolean类型、非Boolean类型。
标准参数
标准参数就是各个JVM的版本中不变的,相对稳定的参数。
例如:
-help
-server
-client
-version
-showversion
-cp
-classpath
X参数
X参数是非标准化参数,也是相对不稳定的参数。
例如:
-Xint:解释执行
-Xcomp:第一次使用就编译成本地代码
-Xmixed:混合模式,JVM自己决定是否编译成本地代码
如下图所示,默认是-Xmixed:
XX参数
XX参同样是非标准化的参数,相对不稳定,主要用于JVM调优和Debug。
XX参数分为Boolean类型和非Boolean类型。
Boolean类型
格式:-XX:[+-]
例如:
-XX:+UseConcMarkSweepGC
-XX:+UseG1GC
非Boolean类型
格式:-XX:
例如:
-XX:MaxGCPauseMillis=500
-XX:GCTimeRatio=19
还有一些特例参数,例如:
-Xms
-Xmx
-Xss
这三个参数虽然以X开头,但不是X参数,而是XX参数。
-Xms 等价于-XX:InitialHeapSize
,设置初始化堆大小。
-Xmx 等价于-XX:MaxHeapSize
,设置堆最大大小。
-Xss 等价于-XX:ThreadStackSize
,设置线程虚拟机栈的大小。
如下图所示,使用jinfo命令,指定pid,可以查看着三个参数的默认大小。