JVM的命令行选项分成三类标准选项(以-为前缀),非标准选项(以-X为前缀),非稳定选项(以-XX为前缀)。其中标准选项是Java Virtual Machine Specification 要求所有Java虚拟机都必须实现的选项,它会在发行版之间保持稳定,在后续版本中也不太会发生变化,使用java -help可以看到所有标准选项;非标准选项不会强制所有JVM都必须支持,它可能会在发行版之间发生更改,或者废除,使用java -X可以看到所有非标准选项。非稳定选项通常是为了特定需要而对JVM的运行进行校正,主要是给开发者调试使用,非稳定选项会在后续的版本中废除。
标准选项:
非标准选项:
非稳定选项(HotSpot VM):
带有布尔标记的非稳定选项,选项前的+或-表示true和false,用于开启对应的特性或者使用默认值。例如:-XX:+UseCompressedOops用来开启压缩指针的特性,-XX:-UseCompressedOops则是使用默认值;除了布尔标记,还有一类带有附加选项的非稳定选项,例如:-XX:MaxPermSize=16m用来设置JVM持久代大小为16m,单位可以是k,m,g。=后边也可以是字符串,例如:XX:HeapDumpPath=./dump.core,用来存放当java进程因OOM或crash被OS强制终止后,生成的hprof(Heap PROFling)格式的堆内存快照文件。