Java 程序启动形式
- 执行类:java [-options] class [args…]
- 执行 jar 文件:java [-options] -jar jarfile [args…]
options 指 JVM 选项,比方堆内存大小;args 指程序接管的参数,也就是 public static void main(String[] args) 中的 args。
class 指启动类文件(.class)的门路,jarfile 指启动的 jar 包门路。
JVM 选项分类
前缀 | 类型 | 特点 |
---|---|---|
– | 规范 | 所有 JVM 实现都反对 |
-X | 非标准 | 不能保障被所有的 JVM 实现都反对,变更不另行通知 |
-XX | 不稳固 | 不能保障被所有的 JVM 实现都反对,变更不另行通知 |
规范选项
java -help 能够看到所有的规范选项帮忙信息,局部后果如下:
其中利用设置零碎属性(-D< 名称 >=< 值 >)能够用来给 Springboot 我的项目 jar 启动命令中退出一些属性笼罩我的项目中的配置。
非标准选项
java -X 能够看到所有非标准选项帮忙信息,局部后果如下:
不稳固选项
不稳固选项临时没发现有特定的命令查找进去,然而能够依据文后的查找指令看到相干的后果,也能够去文开端的参考链接查看。它们的格局如 < 前缀 >:< 选项 >。
如何指定选项的值?
规范选项(-)和非标准选项(-X)依据帮忙信息给出的格局写就能够了。
非标准选项有点非凡,如果选项类型是布尔类型(bool)则用 + 示意应用(true),用 - 示意不应用(false),写在选项名后面,比方应用 G1 垃圾收集器(-XX:+UseG1GC);如果是其余类型个别在选项后加 = 并指定值,比方设置元空间大小为 128 兆(-XX:MetaspaceSize=128m)。
如何查看选项的值?
有三个非标选项能够让 java 命令打印出以后语句的选项信息(类型 | 选项名 | 值 | 实用类型)
选项 | 作用 |
---|---|
-XX:+PrintFlagsInitial | 打印所有选项的默认值 |
-XX:+PrintFlagsFinal | 打印所有选项的最终值,执行这条指令时,所有选项的值 |
-XX:+PrintCommandLineFlags | 打印有变动的选项值,默认值和最终值有差别的选项 |
比方执行 java -version 指令查看 JVM 版本,同时指定打印所有 JVM 选项的最终值:
java -XX:+PrintFlagsFinal -version
还能够通过 grep 对查问后果进行筛选,比方:
java -XX:+PrintFlagsFinal -version | grep G1
统计选项个数
通过 wc < 选项(- c 字节数,- l 行数,- w 字数)>,统计行数就能够晓得有多少个选项。
java -XX:+PrintFlagsFinal -version | wc -l
选项实用类型
类型 | 含意 |
---|---|
product | 官网反对, JVM 外部选项 |
rw | 可动静写入的 |
C1 | Client JIT(Just In Time)客户端类型的 JVM 及时编译器 |
C2 | Server JIT(Just In Time)服务器类型的 JVM 及时编译器 |
pd | Platform Dependent 平台独立 |
lp64 | 仅 64 位 JVM |
manageable | 内部定义的并且是可动静写入的 |
diagnostic | 用于虚拟机 debug 的 |
experimental | 非官方反对的 |
参考链接
Oracle – Java 8 JVM 选项
Oracle – Java HotSpot VM 选项