java jvm参数配置如何查看 jvm默认参数查看_JVM



一、你说你做过JVM调优和参数配置,请问如何盘点查看MM系统默认值?

1、JVM的标配参数和X参数

(1)标配参数


java jvm参数配置如何查看 jvm默认参数查看_java_02

标配参数 1


java jvm参数配置如何查看 jvm默认参数查看_java jvm参数配置如何查看_03

标配参数 2

在jdk各个版本稳定,很少有很大变化

(2)X参数(了解)


java jvm参数配置如何查看 jvm默认参数查看_默认值_04

X参数

2、JVM的XX参数之布尔类型

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

其中:

+:表示开启 -:表示关闭

(2)两方面举类:

1、是否打印收集gc细节
-XX: +PrintGCDetails
-XX: -PrintGCDetails 2、是否使用串行垃圾收集器
-XX: -UseSeialGC
-XX: +UseSerialGC

代码实现:


package com.study.jvmgc;

public class HelloGC {
    public static void main(String[] args) throws Exception{
        System.out.println("************HelloGC");

        Thread.sleep(Integer.MAX_VALUE);
    }
}


运行操作,添加jvm参数:


java jvm参数配置如何查看 jvm默认参数查看_java jvm参数配置如何查看_05


java jvm参数配置如何查看 jvm默认参数查看_查看jar引用关系_06


java jvm参数配置如何查看 jvm默认参数查看_默认值_07


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

可以采用两个命令:jps、jinfo


java jvm参数配置如何查看 jvm默认参数查看_JVM_08


查看正在运行中java程序,它的某个参数是否开启?


E:interview2020-mastersrcmainjavacomstudythread>jinfo -flag PrintGCDetails 11504


java jvm参数配置如何查看 jvm默认参数查看_默认值_09


想要把jvm的参数开启,我们需要指定VM参数:


java jvm参数配置如何查看 jvm默认参数查看_java jvm参数配置如何查看_10


再次启动程序:


java jvm参数配置如何查看 jvm默认参数查看_JVM_11


3、JVM的XX参数设值类型(JVM调参)

kv设置类型

(1)公式

jinfo -flag 配置项 进程编号

(2)两参数举类

1、-XX:MetaspaceSize = 128
2、-XX:MaxTenuringThreshold = 15

操作图:


java jvm参数配置如何查看 jvm默认参数查看_java_12

1

java jvm参数配置如何查看 jvm默认参数查看_java_13

2

另一种jvm参数配置:


java jvm参数配置如何查看 jvm默认参数查看_查看jar引用关系_14


启动后:


java jvm参数配置如何查看 jvm默认参数查看_查看jar引用关系_15


默认值是:21807104,设置值:1262485504,以上可以证实有两种类型:Boolean(默认值)、设置值(kv值)

其中kv值,根据自身业务的需要来调整参数。

还有一种,设置年老值


E:interview2020-master>jinfo -flag MaxTenuringThreshold 4812

-XX:MaxTenuringThreshold=15


java jvm参数配置如何查看 jvm默认参数查看_默认值_16


4、JVM的XX参数之XmsXmx坑题


E:interview2020-master>jps -l
12272
4016 org.jetbrains.idea.maven.server.RemoteMavenServer36
8080 sun.tools.jps.Jps
12456 org.jetbrains.kotlin.daemon.KotlinCompileDaemon
13816 org.jetbrains.jps.cmdline.Launcher
4812 com.study.jvmgc.HelloGC

E:interview2020-master>jinfo -flags 4812
Attaching to process ID 4812, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.40-b25

//系统配置,包括(新生代、年老区)
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=134217728 -XX:MaxHeapSize=2118123520 -XX:MaxNewSize=705691648 -XX:MetaspaceSize=1262485504 -XX:MinHeapDeltaByt
es=524288 -XX:NewSize=44564480 -XX:OldSize=89653248 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocat
ion -XX:+UseParallelGC

//人工配置
Command line:  -XX:MetaspaceSize=1204m -javaagent:D:javaidea201903config-pathclassIntelliJ IDEA 2019.3.3libidea_rt.jar=53467:D:javaidea201903config-pathclassIntelli
J IDEA 2019.3.3bin -Dfile.encoding=UTF-8

E:interview2020-master>jinfo -flag InitialHeapSize 4812
-XX:InitialHeapSize=134217728

E:interview2020-master>jinfo -flag UseSerialGC 4812
-XX:-UseSerialGC

E:interview2020-master>jinfo -flag UseParallelGC 4812
-XX:+UseParallelGC

E:interview2020-master>jinfo -flag MaxHeapSize 4812
-XX:MaxHeapSize=2118123520

E:interview2020-master>


(1)题外坑

两个经典参数:-Xms和-Xmx

其中:

-XX:InitialHeapSize
-Xmx: 等价于 -XX:MaxHeapSize

5、JVM盘点家底查看初始默认值

初始化参数(没动过的参数)


E:interview2020-master>java -XX:+PrintFlagsInitial    //盘点家底查看初始默认值


如图所示:


java jvm参数配置如何查看 jvm默认参数查看_java_17


查看版本:


E:interview2020-master>java -XX:+PrintFlagsFinal -version


如图所示:


java jvm参数配置如何查看 jvm默认参数查看_java_18


堆空间初始化大小:(内存条不一样,初始化的参数也就不同)修改以后的参数

“=”表示jvm默认值没改过参数,“:=”表示用户改过的参数;


java jvm参数配置如何查看 jvm默认参数查看_默认值_19


6、JVM盘点家底查看修改变更值


E:interview2020-master>java -XX:+PrintFlagsFinal -XX:MetaspaceSize=512m


java jvm参数配置如何查看 jvm默认参数查看_默认值_20

查看修改变更值

//这个命令的作用主要看最后一个参数“UseParallelGC”,决定了本次jvm默认的垃圾回收用的是哪一种
E:interview2020-master>java -XX:+PrintCommandLineFlags -version

-XX:InitialHeapSize=132335808 -XX:MaxHeapSize=2117372928 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocat
ion -XX:+UseParallelGC
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

E:interview2020-master>


gc的四大算法:引用计数、标志拷贝、标记清除、标记整理

这个命令的作用主要看最后一个参数“UseParallelGC”,决定了本次jvm默认的垃圾回收用的是哪一种,而UseParallelGC是并行垃圾回收gc