如何使用和查找JVM选项

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 可以看到所有的标准选项帮助信息,部分结果如下:

image-20211013175319894

其中利用设置系统属性(-D<名称>=<值>)可以用来给Springboot项目jar启动命令中加入一些属性覆盖项目中的配置。

非标准选项

java -X 可以看到所有非标准选项帮助信息,部分结果如下:

image-20211013174934917

不稳定选项

不稳定选项暂时没发现有特定的命令查找出来,但是可以根据文后的查找指令看到相关的结果,也可以去文末尾的参考链接查看。它们的格式如<前缀>:<选项>。

如何指定选项的值?

标准选项(-)和非标准选项(-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

image-20211013182036810

还可以通过grep对查询结果进行筛选,比如:

java -XX:+PrintFlagsFinal -version | grep G1

image-20211013182200243

统计选项个数

通过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 选项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我有八千部下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值