参数来源:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
类型一:标准参数选项[了解即可]
特点: 比较稳定,后续版本基本不会变化 , 以-开头
各种选项
直接在DOS窗口中运行java或者java -help可以看到所有的标准选项
-d32 使用 32 位数据模型 (如果可用)
-d64 使用 64 位数据模型 (如果可用)
-server 选择 "server" VM
默认 VM 是 server.
-cp <目录和 zip/jar 文件的类搜索路径>
-classpath <目录和 zip/jar 文件的类搜索路径>
用 ; 分隔的目录, JAR 档案
和 ZIP 档案列表, 用于搜索类文件。
-D<名称>=<值>
设置系统属性
-verbose:[class|gc|jni]
启用详细输出
-version 输出产品版本并退出
-version:<值>
警告: 此功能已过时, 将在
未来发行版中删除。
需要指定的版本才能运行
-showversion 输出产品版本并继续
-jre-restrict-search | -no-jre-restrict-search
警告: 此功能已过时, 将在
未来发行版中删除。
在版本搜索中包括/排除用户专用 JRE
-? -help 输出此帮助消息
-X 输出非标准选项的帮助
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
按指定的粒度启用断言
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
禁用具有指定粒度的断言
-esa | -enablesystemassertions
启用系统断言
-dsa | -disablesystemassertions
禁用系统断言
-agentlib:<libname>[=<选项>]
加载本机代理库 <libname>, 例如 -agentlib:hprof
另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
-agentpath:<pathname>[=<选项>]
按完整路径名加载本机代理库
-javaagent:<jarpath>[=<选项>]
加载 Java 编程语言代理, 请参阅 java.lang.instrument
-splash:<imagepath>
使用指定的图像显示启动屏幕
补充内容:-server与-client
对于以上第2点,我们可以打开DOS窗口,输入java -version就可以看到64位机器上用的server模式,如下所示:
类型二:-X参数选项
特点
非标准化参数<br /> 功能还是比较稳定的。但官方说后续版本可能会变更<br /> 以-X开头
各种选项
直接在DOS窗口中运行java -X命令可以看到所有的X选项
-Xmixed 混合模式执行 (默认)
-Xint 仅解释模式执行
-Xcomp 仅采用即时编译器模式
-Xbootclasspath:<用 ; 分隔的目录和 zip/jar 文件>
设置搜索路径以引导类和资源
-Xbootclasspath/a:<用 ; 分隔的目录和 zip/jar 文件>
附加在引导类路径末尾
-Xbootclasspath/p:<用 ; 分隔的目录和 zip/jar 文件>
置于引导类路径之前
-Xdiag 显示附加诊断消息
-Xnoclassgc 禁用类垃圾收集
-Xincgc 启用增量垃圾收集
-Xloggc:<file> 将 GC 状态记录在文件中 (带时间戳)
-Xbatch 禁用后台编译
-Xms<size> 设置初始 Java 堆大小
-Xmx<size> 设置最大 Java 堆大小
-Xss<size> 设置 Java 线程堆栈大小
-Xprof 输出 cpu 配置文件数据
-Xfuture 启用最严格的检查, 预期将来的默认值
-Xrs 减少 Java/VM 对操作系统信号的使用 (请参阅文档)
-Xcheck:jni 对 JNI 函数执行其他检查
-Xshare:off 不尝试使用共享类数据
-Xshare:auto 在可能的情况下使用共享类数据 (默认)
-Xshare:on 要求使用共享类数据, 否则将失败。
-XshowSettings 显示所有设置并继续
-XshowSettings:all
显示所有设置并继续
-XshowSettings:vm 显示所有与 vm 相关的设置并继续
-XshowSettings:properties
显示所有属性设置并继续
-XshowSettings:locale
显示所有与区域设置相关的设置并继续
-X 选项是非标准选项,如有更改,恕不另行通知
JVM的JIT编译模式相关的选项
-Xint :只使用解释器:所有字节码都被解释执行,这个模式的速度是很慢的<br /> -Xcomp :只使用编译器:所有字节码第一次使用就被编译成本地代码,然后在执行<br /> -Xmixed:混合模式:这是默认模式,刚开始的时候使用解释器慢慢解释执行,后来让JIT即时编译器根据程序运行的情况,有选择地将某些热点代码提前编译并缓存在本地,在执行的时候效率就非常高了<br /> 默认使用的就是这种模式,证明如下:<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/350923/1662873493908-1e55eb02-7ffe-435a-a16a-caae3d853ec2.png#clientId=u86c02c1f-0d25-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=108&id=u996d1f4e&margin=%5Bobject%20Object%5D&name=image.png&originHeight=108&originWidth=780&originalType=binary&ratio=1&rotation=0&showTitle=false&size=15176&status=done&style=none&taskId=u93e397c1-917d-4e1b-a363-3bdb142e1de&title=&width=780)
特别地
-Xmx -Xms -Xss属于XX参数?
单位:k/K、m/M、g/G
设置:-Xmx、-Xms最好设置成一样的值,避免扩容带来的损耗
-Xms
-Xmx
-Xss
类型三:-XX参数选项[重点]
特点
非标准化参数
使用的最多的参数类型
这类选项属于实验性,不稳定(后续优化可能会增加参数或者删除已有的配置)
以-XX开头
作用
用于开发和调试JVM
分类
Boolean类型格式
-XX:+<option> 表示启用option属性<br /> -XX:-<option>表示禁用option属性<br /> 举例<br /> ![image.png](https://cdn.nlark.com/yuque/0/2022/png/350923/1662873914264-e690f50d-bcf8-44a6-81c4-c44b18c10428.png#clientId=u86c02c1f-0d25-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=105&id=uee879739&margin=%5Bobject%20Object%5D&name=image.png&originHeight=105&originWidth=682&originalType=binary&ratio=1&rotation=0&showTitle=false&size=74443&status=done&style=none&taskId=u0eec6091-ff94-45ac-a60e-b76b185051b&title=&width=682)<br /> 说明:因为有的指令默认是开启的,所以可以使用-关闭
非Boolean类型格式(key-value类型)
子类型1:数值型格式-XX:<option>=<number><br /> ![image.png](https://cdn.nlark.com/yuque/0/2022/png/350923/1662873931662-3039ed46-7de8-4281-afdb-601b8d718476.png#clientId=u86c02c1f-0d25-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=234&id=u88cefaf8&margin=%5Bobject%20Object%5D&name=image.png&originHeight=234&originWidth=735&originalType=binary&ratio=1&rotation=0&showTitle=false&size=148162&status=done&style=none&taskId=ue8e279d9-f6e0-478c-ad57-2abd7dcc986&title=&width=735)
子类型2:非数值型格式-XX:<name>=<string><br /> ![image.png](https://cdn.nlark.com/yuque/0/2022/png/350923/1662873939126-761d6207-5f11-43b5-876c-8d7ca2719efd.png#clientId=u86c02c1f-0d25-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=88&id=u24a9f561&margin=%5Bobject%20Object%5D&name=image.png&originHeight=88&originWidth=729&originalType=binary&ratio=1&rotation=0&showTitle=false&size=42557&status=done&style=none&taskId=u1a3aa7a7-9e2a-4944-bb82-20c571492c7&title=&width=729)
特别地
-XX:+PrintFlagsFinal
输出所有参数的名称和默认值
默认不包括Diagnostic和Experimental的参数
可以配合-XX:+UnlockDiagnosticVMOptions和-XX:UnlockExperimentalVMOptions使用