相关文章:
这里我们主要来了解下 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 编译的话,再次运行时需要重复解析
-
-
-Xcomp
-
设置 JVM 以编译模式来运行
-
表示 JVM 只对字节码进行编译,而不进行解释执行
-
会导致在首次运行代码时,将所有字节码编译成本地代码,降低了 JVM 的启动速度
-
-
-Xmixed
-
设置 JVM 以混合模式来运行
-
JVM 的默认运行模式
-
由 JVM 自身决定什么时候将字节码编译成本地代码
-
四、非稳定参数 (-XX)
-
-XX:+InitialHeapSize
- 设置初始堆大小,等价于 -Xms
-
-XX:+MaxHeapSize
- 设置最大堆大小,等价于 -Xmx
-
-XX:+ThreadStackSize
- 设置线程堆栈大小,等价于 -Xss
-
-XX:+PrintFlagsInitial
- 查看 JVM 参数的初始值
-
-XX:+PrintFlagsFinal
- 查看 JVM 参数的最终值
-
-XX:+UnlockExperimentalVMOptions
-
解锁实验参数
-
JVM 中有些参数不能直接通过 -XX 进行赋值,需要先加上该参数才可以进行赋值
-
-
-XX:+UnlockDiagnosticVMOptions
- 解锁诊断参数
-
-XX:+PrintCommandLineFlags
-
查看命令行参数
-
如上所示,赋值会涉及到 = 和 := 两种方式
方式 作用 = 表示默认值 := 表示被用户或被 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
- 查看 GC 日志信息,等同于
-
-XX:+PrintGCDetails
- 查看 GC 详细日志信息