首页 > 其他分享 >如何使用和查找JVM选项

如何使用和查找JVM选项

时间:2023-04-05 15:23:43浏览次数:52  
标签:选项 java args XX 查找 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 可动态写入的
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 选项

标签:选项,java,args,XX,查找,JVM,类型
From: https://www.cnblogs.com/shuiyao3/p/17289476.html

相关文章

  • JVM的垃圾收集算法
    介绍分代收集理论和几种垃圾收集算法的思想及其发展过程。分代收集理论当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”(GenerationalCollection)的理论进行设计,分代收集名为理论,实质是一套符合大多数程序运行实际情况的经验法则,分代收集理论它建立在两个分代假说之上:弱......
  • JVM的垃圾收集算法
    介绍分代收集理论和几种垃圾收集算法的思想及其发展过程。分代收集理论当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”(GenerationalCollection)的理论进行设计,分代收集名为理论,实质是一套符合大多数程序运行实际情况的经验法则,分代收集理论它建立在两个分代假说之上:......
  • JVM——JVM级别下的高并发问题
    摘要本文将深入的学习与分析JVM虚拟机的原理和相关的调优的相关实例。JVM级别下的高并发问题Java内存模型与线程“让计算机并发执行若干个运算任务”与“更充分地利用计算机处理器的效能”之间的因果关系,看起来顺理成章,实际上它们之间的关系并没有想象中的那么简单,其中一个重......
  • dash-board的kube-config文件怎么设置 就是比kube-proxy类似多了一个token选项
    https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/#使用RBAC鉴权RBAC是基于角色的访问控制(Role-BasedAccessControl)https://kubernetes.io/zh/docs/reference/access-authn-authz/authorization/#鉴权概述1.1:在指定namespace创建账户:#kubectlcre......
  • java lambda List 查找 anyMatch() allMatch() noneMatch()
    packagelambda.list;importcn.hutool.core.util.ObjectUtil;importlombok.extern.slf4j.Slf4j;importorg.junit.Test;importpojo.Dome;importjava.util.ArrayList;importjava.util.List;/***@Author:xxx*@date2021/5/14**/@Slf4jpublicclassSe......
  • Mac - 查找并删除大文件(其他项占用过多解决方案)
    Mac存储空间中「其他」项占用非常大,通过工具来查看文件并清除大文件。工具名称:OmniDiskSweeper官网下载地址OSX里面的Other就是所有其他的文件。所有的文档,包括.pdf.doc.psd所有的压缩文件和磁盘映像包括.zip.dmg.iso所有的用户数据所有的系统文件包括Sy......
  • Address already in use: JVM_Bind:80
    今天maven工程中配置pom.xml时Tomcat配了80端口号,结果提示Addressalreadyinuse:JVM_Bind:80,也就是80端口被占用,于是就按照往常的惯例去查看是什么进程占用了80端口1、打开cmd命令窗口,输入netstat-ano|findstr80,回车就会看见被占用端口号8080所对应的PID为4然后去任务管......
  • undefined symbol问题的查找、定位与解决方法
    今天被客户测出来一个问题:程序执行中报错,报错内容如下XXXX:symbollookuperror:/home/....../libpdfium.so:undefinedsymbol:CRYPT_MD5Generate报错分析:    这个问题表明是符号未定义的问题,而且直接定位于产品链接的第三方动态库libpdfium.so中,于是从libpdfium.so中......
  • linux下的c++filt 命令查找未定义符号的函数名
    我们知道,在C++中,是允许函数重载的,也就引出了编译器的namemangling机制,今天我们要介绍的c++filt命令便与此有关。   对于从事linux开发的人来说,不可不知道c++filt命令的使用。    在linux开发中,如果要调用基础模块库,就要包含对应的头文件,并在makefile中指......
  • JVM堆外内存泄漏故障排查记录
    线上JVM堆外内存泄漏问题的排查过程与思路,其中夹带一些「JVM内存分配的原理分析」以及「常用的JVM问题排查手段和工具分享」,希望对大家有所帮助。在整个排查过程中,我也走了不少弯路,但是在文章中我仍然会把完整的思路和想法写出来,当做一次经验教训,给后人参考,文章最后也总结了下内......