JVM参数类型

标配参数

-version
-help

X参数(了解)

  • -Xint 解释执行
  • -Xcomp 第一次使用就编译成本地代码
  • -Xmixed 混合模式(先编译后执行)

    XX参数(重点)

    Boolean类型

    公式: -XX:+或者-某个属性值

  • 表示开启 -表示关闭

case:

  • 是否打印GC收集细节
    jinfo示例
    如何查看一个java程序它的某个jvm参数是否开启?具体值是多少? ```java package com.interview.demo;

import java.util.concurrent.TimeUnit;

/**

  • @Author leijs
  • @date 2022/3/29 */ public class HelloGC { public static void main(String[] args) throws InterruptedException {
    1. System.out.println("hello gc");
    2. TimeUnit.SECONDS.sleep(Integer.MAX_VALUE);
    } }

``` image.png
进程编号: 21644
使用jinfo -flag {参数} {进程号}
image.png
说明没有添加。
然后重新添加后:
image.png
image.png

是否使用串行垃圾回收器?
-XX:+UseSerialGC

KV设值类型

公式:-XX:属性key=属性值value
case:
元空间大小: -XX:MetaspaceSize=128m

没有配置:默认21M左右

image.png
-XX:MaxTenuringThreshold=15
经过多少次可以升到老年代

jinfo -flags {进程编号}

打印所有能触达的参数
image.png

盘点JVM默认值

1. jinfo

2. 其他

系统不一样,内存不一样,JVM默认的参数初始值也会不一样。
-Xmx: 初始化最大内存只会用物理内存的1/4
-Xms: 初始值只会用物理内存的1/64

-XX:+PrintFlagInitial

  • 主要是查看初始默认
  • 公式: java -XX:+PrintFlagsInitial

image.png
image.png
=初始值
:= 被修改过(人为或JVM修改过)

-XX:+PrintFlagsFinal

  • 主要查看修改更新后的值
  • java -XX:+PrintFlagsFinal -version 加version会打印JVM版本号

    -XX:+PrintCommandLineFlags

  • 打印命令行参数

image.png
这个命令方便查看默认的垃圾回收器:默认:-XX:+UseParallelGC

题外话

image.png

题外话

两个经典参数: -Xmx -Xms 如何解释
-Xms : 等价于-XX:InitialHeapSize
-Xmx:等价于-XX:MaxHeapSize