Performance Tuning -- 01 -- JVM常用命令

原文链接:Performance Tuning – 01 – JVM常用命令


相关文章:


这里我们主要来了解下 JVM 中的常用命令


一、JVM 参数分类

  • 标准参数 (-)

    • 在 JVM 的各个版本中基本不变,相对比较稳定
  • 非标准参数 (-X)

    • 在 JVM 的各个版本中可能会变,但变化的较小
  • 非稳定参数 (-XX)

    • 在 JVM 的各个版本中相对不稳定,主要用于 JVM 的性能调优以及 Debug,分为以下两类

      • Boolean 类型

        格式含义
        -XX:[±] 表示启用 (+) 或者禁用 (-) name 属性
      • key-value 类型

        格式含义
        -XX: = 表示 name 属性的值是 value

二、标准参数 (-)

  • -help

    • 查看命令帮助信息
  • -version

    • 查看当前 Java 版本
  • -verbose

    • 查看虚拟机运行的详细信息,有以下 3 个参数

      参数作用
      -verbose:class查看类加载信息
      -verbose:gc查看 GC 日志信息,等同于 -XX:+PrintGC
      -verbose:jni查看 native 方法调用信息

三、非标准参数 (-X)

  • -Xint

    • 设置 JVM 以解释模式来运行

    • 表示 JVM 只进行解释执行,而不对字节码进行编译

    • 会导致 JVM 抛弃 JIT (即时编译) 可能带来的性能优势,由于解释器是逐条读入,逐条解释运行的,如果代码没有被 JIT 编译的话,再次运行时需要重复解析

      image

  • -Xcomp

    • 设置 JVM 以编译模式来运行

    • 表示 JVM 只对字节码进行编译,而不进行解释执行

    • 会导致在首次运行代码时,将所有字节码编译成本地代码,降低了 JVM 的启动速度

      image

  • -Xmixed

    • 设置 JVM 以混合模式来运行

    • JVM 的默认运行模式

    • 由 JVM 自身决定什么时候将字节码编译成本地代码

      image


四、非稳定参数 (-XX)

  • -XX:+InitialHeapSize

    • 设置初始堆大小,等价于 -Xms
  • -XX:+MaxHeapSize

    • 设置最大堆大小,等价于 -Xmx
  • -XX:+ThreadStackSize

    • 设置线程堆栈大小,等价于 -Xss
  • -XX:+PrintFlagsInitial

    • 查看 JVM 参数的初始值
  • -XX:+PrintFlagsFinal

    • 查看 JVM 参数的最终值
  • -XX:+UnlockExperimentalVMOptions

    • 解锁实验参数

    • JVM 中有些参数不能直接通过 -XX 进行赋值,需要先加上该参数才可以进行赋值

  • -XX:+UnlockDiagnosticVMOptions

    • 解锁诊断参数
  • -XX:+PrintCommandLineFlags

    • 查看命令行参数

      image

      • 如上所示,赋值会涉及到 = 和 := 两种方式

        方式作用
        =表示默认值
        :=表示被用户或被 JVM 修改过的值
  • -XX:+HeapDumpOnOutOfMemoryError

    • 当发生内存溢出时,自动导出内存映射 (dump) 文件
  • -XX:HeapDumpPath

    • 当发生内存溢出时,导出内存映射 (dump) 文件存放的路径
  • -XX:+UseCompressedClassPointers

    • 设置是否压缩对象指针

    • 在 64 位的操作系统中,对象指针长度会翻倍,增大了 JVM 的内存消耗,通过压缩对象指针,可以起到节约内存空间的作用

    • 从 JDK6.0 开始,在 64 位系统上会默认开启压缩指针

  • -XX:MetaspaceSize

    • 设置初始 Metaspace 大小

    • 该值越大触发 Metaspace GC 的时机就越晚

    • 随着 GC 的到来,虚拟机会根据实际情况动态调整 Metaspace 的大小

  • -XX:MaxMetaspaceSize

    • 设置最大 Metaspace 大小
  • -XX:MinMetaspaceFreeRatio

    • 设置 Metaspace 最小空闲空间比

    • 当进行过 Metaspace GC 后,虚拟机会计算当前 Metaspace 的空闲空间比,如果空闲比小于该值 (即实际非空闲占比过大,内存不够用),那么虚拟机将增加 Metaspace 的大小,默认为 40%

    • 设置该参数可以控制 Metaspace 的增长速度,不宜过小或过大

      • 值过小,会导致 Metaspace 增长缓慢,进而导致 Metaspace 的使用趋于饱和,影响后续的类加载

      • 值过大,会导致 Metaspace 增长过快,进而导致内存浪费

  • -XX:MaxMetaspaceFreeRatio

    • 设置 Metaspace 最大空闲空间

    • 当进行过 Metaspace GC 后,虚拟机会计算当前 Metaspace 的空闲空间比,如果空闲比大于该值,那么虚拟机会释放 Metaspace 的部分空间,默认为 70%

  • -XX:MaxMetaspaceExpanison

    • 设置 Metaspace 增长时的最大幅度
  • -XX:MinMetaspaceExpanison

    • 设置 Metaspace 增长时的最小幅度
  • -XX:+PrintGC

    • 查看 GC 日志信息,等同于 -verbose:gc
  • -XX:+PrintGCDetails

    • 查看 GC 详细日志信息

五、参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值