微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JVM常见参数介绍

jvm中的可选参数分为以下三类

  • 标准选项:以“-”开头的选项
  • 非标准选项:以“-X”开头的选项
  • 不稳定选项:以“-XX:”开头的选项

1. 标准选项

选项 说明
-version 输出jdk版本
-cp 目录和 zip/jar 文件的类搜索路径
-classpath 目录和 zip/jar 文件的类搜索路径,用 ; 分隔的目录, JAR 档案和 ZIP 档案列表, 用于搜索文件
-D<名称>=<值> 设置系统属性
-X 输出非标准选项的帮助

2. 非标准选项

选项 说明
-xms<size> 设置初始 Java 堆大小(字节)。此值必须是1024的倍数且大于1 MB。附加字母k或k表示千字节,m或m表示兆字节,g或g表示千兆字节。
-Xmx<size> 以字节为单位指定内存分配池的最大大小(以字节为单位)。此值必须是1024的倍数且大于2 MB。附加字母k或k表示千字节,m或m表示兆字节,g或g表示千兆字节。认值是根据系统配置在运行时选择的。对于服务器部署,-xms和-Xmx通常设置为相同的值。
-Xss<size> 设置 Java 线程堆栈大小(以字节为单位)。附加字母k或k表示KB,m或m表示MB,g或g表示GB。等同于 -XX:ThreadStackSize.
-Xmn<size> 设置年轻代堆的初始大小和最大大小(字节)。附加字母k或k表示千字节,m或m表示兆字节,g或g表示千兆字节。Oracle建议将年轻代的大小保持在堆总大小的一半到四分之一之间。

3. 不稳定选项

对于不稳定选项的设置可分为以下三种情况

  • 布尔选项
    • 开启选项 -XX:+<option>
    • 禁止选项 -XX:-<option>
  • 数值选项
    • -XX:<option>=<number>
  • 字符串选项
    • -XX:<option>=<string>
选项 说明
-XX:ThreadStackSize=size 设置线程堆栈大小(以字节为单位)。附加字母k或k表示千字节,m或m表示兆字节,g或g表示千兆字节。等同 -Xss
XX:MaxDirectMemorySize=size 设置新I/O的直接缓冲区分配最大总大小(以字节为单位)。附加字母k或k表示千字节,m或m表示兆字节,g或g表示千兆字节。认情况下,大小设置为0,这意味着JVM会自动选择NIO直接缓冲区分配的大小。
-XX:+TraceClassLoading 启用类加载时的跟踪。认情况下,此选项处于禁用状态,并且不跟踪类。
-XX:+HeapDumpOnOutOfMemoryError 当出现java.lang.OutOfMemoryError异常时,通过使用堆探查器(HPROF)将Java堆转储到当前目录中的文件。可以使用-XX:HeapDumpPath选项显式设置堆转储文件路径和名称认情况下,当抛出OutOfMemoryError异常时,此选项处于禁用状态,堆不会转储。
-XX:HeapDumpPath=path 设置-XX:+HeapDumpOnOutOfMemoryError选项时,设置用于写入堆探查器(HPROF)提供的堆转储的路径和文件名。认情况下,该文件在当前工作目录中创建,并命名为java_pid.hprof文件其中pid是导致错误的进程的标识符。
-XX:InitialHeapSize=size 设置内存分配池的初始大小(字节)。此值必须为0或1024的倍数且大于1 MB。附加字母k或k表示千字节,m或m表示兆字节,g或g表示千兆字节。认值是根据系统配置在运行时选择的。如果将此选项设置为0,则初始大小将设置为分配给旧代和年轻代的大小之和。年轻一代的堆大小可以使用-XX:NewSize选项设置。
-XX:MaxNewSize=size 设置年轻代堆的最大大小(字节)
-XX:NewSize=size 设置年轻代堆的初始大小(字节)。附加字母k或k表示千字节,m或m表示兆字节,g或g表示千兆字节。等同-Xmn
-XX:MaxHeapSize=size 设置内存分配池的最大大小(以“字节”为单位)。此值必须是1024的倍数且大于2 MB。附加字母k或k表示千字节,m或m表示兆字节,g或g表示千兆字节。认值是根据系统配置在运行时选择的。等效于-Xmx
-XX:MaxMetaspaceSize=size 设置可为类元数据分配的最大本机内存量。认情况下,大小不受限制。应用程序的元数据量取决于应用程序本身、其他正在运行的应用程序以及系统上可用内存的数量
-XX:ParallelGCThreads=threads 设置年轻和旧代中用于并行垃圾收集的线程数。认值取决于JVM可用的cpu数量
-XX:+UseParallelGC 允许使用并行清除垃圾收集器(也称为吞吐量收集器)通过利用多个处理器。由认情况下,此选项处于禁用状态,并且根据机器的配置和JVM的类型自动选择收集器。如果启用了-XX:+usepalleloldgc选项,则会自动启用它,除非您显式禁用它。
-XX:+UseParNewGC 允许在年轻一代中使用并行线程进行收集。认情况下,此选项处于禁用状态。当您设置-XX:+useConMarkSweepGC选项时,它将自动启用。JDK 8中不赞成使用-XX:+UseParNewGC选项而不使用-XX:+useConMarkSweepGC选项。
-XX:+PrintGC 允许在每个GC打印消息。认情况下,此选项处于禁用状态。
-XX:+PrintGCDetails 支持在每个GC打印详细消息。认情况下,此选项处于禁用状态。
-XX:+PrintGCTimeStamps 允许在每个GC打印时间戳。认情况下,此选项处于禁用状态。

多参数请参考以下链接
https://docs.oracle.com/en/java/javase/11/tools/java.html
https://www.oracle.com/java/technologies/javase/vmoptions-jsp.html
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html#BABHDABI

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐