文章目录

  • JVM的参数类型
  • 1.标配参数
  • 2.x参数
  • 3.xx参数(重点)
  • (1)Boolean类型(开启/关闭)
  • (2)KV设值类型(Key-Value键值对)
  • (3)jinfo举例,如何查看当前运行程序的配置
  • (4)题外话
  • 4.JVM盘点家底查看初始默认值
  • 第一种方法:
  • 第二种方法:


JVM的参数类型

1.标配参数

从JDK1.0到Java12,一直存在。
-version
-help
java -showversion

2.x参数

-Xint:解释执行

查看java 进程异常关闭原因 查看java进程启动参数_jvm

-Xcomp:第一次使用就编译成本地代码

查看java 进程异常关闭原因 查看java进程启动参数_初始化_02

-Xmixed:混合模式(先编译再执行)

查看java 进程异常关闭原因 查看java进程启动参数_初始化_03

3.xx参数(重点)

(1)Boolean类型(开启/关闭)

🌟一般公式:
-XX:+(或者-)某个属性值
+表示开启,-表示关闭

🌟Case:
是否打印GC收集细节?

  • -XX:+PrintGCDetails
  • -XX:-PrintGCDetails

是否使用串行垃圾回收器?

  • -XX:+UseSerialGC
  • -XX:-UseSerialGC

🌟如何查看一个正在运行中的java程序,它的某个jvm参数是否开启?具体值是多少?

jps:查看正在运行中的java进程。jps -l 得到进程号。

jinfo:查看正在运行的java进程的各种信息。jinfo -flag PrintGCDetails 进程号jinfo -flag是标配,后面加的是具体参数和进程号。

查看java 进程异常关闭原因 查看java进程启动参数_初始化_04

(2)KV设值类型(Key-Value键值对)

🌟一般公式:
-XX:属性key = 属性值value

🌟Case:
设置元空间大小?

  • -XX: MetaspaceSize=128m
    新生代需要经历多少次GC晋升到老年代中的最大阈值?
  • -XX: MaxTenuringThreshold=15
(3)jinfo举例,如何查看当前运行程序的配置

公式:jindo -flag 配置项 进程编号
进程编号用jps获得

InitialHeapSize 初始化的堆大小

如果想一次性查多个配置项,则:jinfo -flags 进程号

(4)题外话

有-Xms和-Xmx这两个经典参数如何解释(为什么没有+/=,算XX参数还是X参数)?
注:-Xms1024m -Xmx1024m,不需要写+和=。
答:
-Xms 就等价于-XX:InitialHeapSize 初始化的堆内存 (初始化为1/64系统内存)
-Xmx 就等价于-XX:MaxHeapSize 堆内存的最大值 (初始化为1/4系统内存)
-Xms和-Xmx只是别名

4.JVM盘点家底查看初始默认值

第一种方法:

jinfo -flag 具体参数 进程编号
jinfo -flags 进程编号

第二种方法:

-XX:PrintFlagsInitial
主要是查看初始默认值
公式:

  1. java -XX:+PrintFlagsInitial -version
  2. java -XX:+PrintFlagsInitial

-XX:PrintFlagsFinal
主要是查看修改更新
公式:

  1. java -XX:+PrintFlagsFinal -version
  2. java -XX:+PrintFlagsFinal
    := 表示被 人为/JVM 修改过的值
    = 表示是默认的

    -XX:+PrintCommandLineFlags
    命令行的,看程序使用的默认JVM参数

    比如最后一个参数表示,默认的垃圾回收机制是并行GC。