• JVM 参数


    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=设置系统属性
    -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

  • 相关阅读:
    2023.10.19 关于设计模式 —— 单例模式
    互联网程序设计课程 第1讲 Java图形窗口程序设计
    CentOS 7.6使用mysql-8.0.31-1.el7.x86_64.rpm-bundle.tar安装Mysql 8.0
    [附源码]java毕业设计闲置物品线上交易系统
    【数据结构】什么是堆,如何使用无序数组生成一个堆?
    基于最小二乘支持向量机(LS-SVM)进行分类、函数估计、时间序列预测和无监督学习(Matlab代码实现)
    ABAQUS计算不收敛问题,排查方法和解决方案都在这儿了
    Android11适配
    Open3D C++文章目录汇总
    远程预付费系统在建设公寓民生保障项目的研究与应用
  • 原文地址:https://blog.csdn.net/imonkeyi/article/details/133700306