Java面试题集锦(13):JVM调优和参数配置,请问如何盘点查看JVM系统默认值

文章目录

      • 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:解释执行
在这里插入图片描述

-Xcomp:第一次使用就编译成本地代码
Java面试题集锦(13):JVM调优和参数配置,请问如何盘点查看JVM系统默认值_第1张图片

-Xmixed:混合模式(先编译再执行)
Java面试题集锦(13):JVM调优和参数配置,请问如何盘点查看JVM系统默认值_第2张图片

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是标配,后面加的是具体参数和进程号。
在这里插入图片描述

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

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

Case:
设置元空间大小?

  • -XX: MetaspaceSize=128m
    新生代需要经历多少次GC晋升到老年代中的最大阈值?
  • -XX: MaxTenuringThreshold=15
    Java面试题集锦(13):JVM调优和参数配置,请问如何盘点查看JVM系统默认值_第3张图片
(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。

你可能感兴趣的:(Java并发面试题,jvm,java)