参数名称的说明
JVM配置参数分别用于跟踪监控JVM状态,分配堆内存以及分配栈内存。按照类型分为三类标准参数、非标准参数和非稳定参数
标准参数(-)
所有 JVM 都必须支持这些参数的功能, 而且向后兼容, 如:
-client : 设置 JVM 使用 client 模式, 特点是启动速度比较快, 但运行时性能和内存管理效率不高. 通常用于客户端应用程序或开发调试; 在32位环境下直接运行 Java 程序默认启用该模式.
-server : 设置 JVM 使 server 模式, 特点是启动速度比较慢, 但运行时性能和内存管理效率很高, 适用于生产环境; 在具有64位能力的JDK环境下默认启用该模式.
1 |
|
非标准参数(-X)
各 JVM 厂商应该都实现这些参数的功能, 但是并不保证所有的 JVM 实现都满足, 且不保证向后兼容。这些用的不多,看看就好。
1 | // 解释执行 |
非稳定参数(-XX)
此类参数各个JVM实现会有所不同, 将来可能会不被支持, 需要慎重使用。这种类型的参数自己又可分为两种,分别如下:
布尔类型。 -XX:+ 或者 - 某个属性值,+ 表示开启,-表示关闭。例如:
1
2
3
4
5// 打印GC详细信息
-XX:+PrintGCDetails
// 不打印GC详细信息
-XX:-PrintGCDetailsKV类型。-XX:属性key=属性值value,例如:
1 | // 设置Metaspace的大小 |
注意: 在”-XX:”后的参数若不需要赋值, 即只是用来配置开启或关闭相应选项, 则需要有 “+” (开启) 或 “-“ (禁止) , 否则应用程序将在日志文件 (如 Tomcat 的日志文件 catalina.out ) 中抛出如下错误:
1 | Missing +/- setting for VM option 'UseConcMarkSweepGC'. |
可以看出, 这里缺少了 “+/-“ 符号, 导致虚拟机启动异常, 修改后即可正常启动.
我们常设置的JVM参数Xms和Xmx,属于哪种类型的JVM参数?-Xms等价于-XX:InitialHeapSize,-Xmx等价于-XX:MaxHeapSize,所以他们都是XX类型参数。