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可动静写入的
C1Client JIT(Just In Time) 客户端类型的JVM及时编译器
C2Server JIT(Just In Time) 服务器类型的JVM及时编译器
pdPlatform Dependent 平台独立
lp64仅 64 位JVM
manageable内部定义的并且是可动静写入的
diagnostic用于虚拟机debug的
experimental非官方反对的

参考链接

Oracle - Java 8 JVM 选项

Oracle - Java HotSpot VM 选项