当前位置:首页 > 编程笔记 > 正文
已解决

JVM 参数

来自网友在路上 165865提问 提问时间:2023-10-11 07:56:52阅读次数: 65

最佳答案 问答题库658位专家为你答疑解惑

JVM 参数类型大致分为以下几类:

  • 标准参数(-):保证在所有的 JVM 实现都支持的参数
  • 非标准参数(-X):通用的,特定于 HotSpot 虚拟机的参数,这些参数不保证在所有 JVM 实现中被支持,且可能会更改
  • 高级运行时参数(-XX):此类参数不建议随意使用,这些参数用于调整 HotSpot VM 的特定区域,不保证所有的 JVM 实现都支持,并且可能会发生改变

参数分为布尔类型和值类型,布尔类型被用于启用默认禁用的特性,或者禁用默认启动的特性,这类参数不用指定值,使用 + 号来启动参数如 -XX:+OptionName,使用 - 号来禁用布尔如 -XX:-OptionName

值类型的参数可以使用 :或者 = 来分隔参数名和参数值,或者值直接跟在参数后面,如果参数值要指定字节大小,你可以不使用后缀,或者使用 k/K 来表示 KB,使用 m/M 来表示 MB,使用 g/G 来表示 GB,如果参数值要指定百分比,你需要使用 0-1 的数字,比如 0.25 表示 25%。

标准参数

标准参数,可以理解为 java 命令的可选项,可以使用 java 命令查看标准参数:
在这里插入图片描述
标准参数的含义:

参数含义-classpath/-cp类搜索路径,可以使用目录或者 zip/jar 文件的路径,多个用 ;分隔-D<name>=<value>设置系统属性-client设置 jvm 使用 client 模式,特点是启动速度比较块,但运行时性能和内存管理效率不高,通常用于客户端应用程序或 PC 应用开发和调试-server设置 jvm 使用 server 模式,默认就是 server 模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境-verbose:[class|gc|jni]启动详细输出-X输出非标准参数的帮助文档

非标准参数

非标准参数是特定于 HotSpot VM 的通用参数,可以使用 java -X 命令查看,不同 JDK 版本可能会有不同。

在这里插入图片描述
非标准参数的含义:

参数名含义-Xint以仅解释模式运行应用程序。对本地代码的编译被禁用,所有字节码都由解释器执行。JIT 编译器提供的性能优势在这种模式下并不存在-Xmixed由解释器执行所有字节码,hot method 除外,后者被由 JIT 编译成本地代码-Xincgc开启增量 gc(默认为关闭),这有助于减少长时间 GC 时应用程序出现的停顿,但由于可能和应用程序并发执行,所以会减低 CPU 对应用的处理能力-Xloggc:file与 -verbose:gc 功能类似,只是将每次 GC 事件的相关情况记录到一个文件中,文件的位置最好在本地,以避免网络的潜在问题。-Xms设置堆的初始容量和最小容量,它必须时 1024 的倍数且不能小于 1M,需要注意的是 -XX:InitalHeapSize 也可以指定堆初始容量,如果这两个都出现在命令行中,则以最后一个参数为准-Xmx指定堆的最大容量,它必须时 1024 的倍数且不能小于 2M,它等价于 -XX:MaxHeapSize 参数-Xss设置线程堆栈的容量,默认值依赖于操作系统,它类似于 -XX:ThreadStackSize-Xmn新生代的初始容量和最大容量,此处的大小指的是 eden+2*surivor sapce,你也可以使用 -XX:NewSize 设置初始容量,使用 -XX:MaxNewSize 设置最大容量,如果都出现在命令行中则以最后一个参数为准

高级运行时参数

这些参数控制 HotSpot VM 的运行时行为。

参数名含义-XX:MaxDirectMemorySize=size设置 NIO 中直接内存的最大空间,可以使用单位如 k、m、g,默认情况下为 0,这表示 JVM 自动选择 NIO 直接内存的大小-XX:+PrintCommandLineFlags打印在命令行中指定的参数-XX:ThreadStackSize=size设置 Java 线程堆栈大小-XX:+HeapDumpOnOutOfMemoryError当出现 OOM 时,在当前目录生成堆转储文件,默认关闭-XX:HeapDumpPath=path当 -XX:+HeapDumpOnOutOfMemoryError 启用后,生成堆转储文件的路径,默认情况下在当前目录下生成,文件名为 java_pid${pid}.hprof,你可以自定义文件名:-XX:HeapDumpPath=/var/log/java/java_heapdump.hprof-XX:LogFile=path设置 HotSpot 的日志文件路径,默认生成在当前工作目录,名为 hotspot.log-XX:InitialHeapSize=size设置堆的初始容量-XX:MaxHeapSize=size设置堆的最大容量-XX:MaxNewSize=size设置新生代的最大容量-XX:+PrintGC打印 GC 事件,默认禁用-XX:+PrintGCDetails打印 GC 事件的详细信息,默认禁用-XX:SurvivorRatio=ratio设置 eden/survivor 的比值,默认值为 8-XX:+UseConcMarkSweepGC使用 GMS 垃圾收集器收集老年代-XX:+UseG1GC使用 G1 垃圾收集器-XX:+UseParallelGC使用 parallel scavenge 垃圾收集器-XX:+UseParallelOldGCfull gc 使用 parallel 垃圾收集器,默认禁用,当启用 -XX:+UseParallelGC 时自动启用-XX:+UseParNewGC在新生代中使用 parallel thread 垃圾收集器,默认禁用,当启用 -XX:+UseConcMarkSweepGC 时自动启用-XX:+UseSerialGC使用 serial 垃圾收集器

参考:
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html#BABDJJFI

https://juejin.cn/post/7033554940677062670

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"JVM 参数":http://eshow365.cn/6-18835-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!