深入理解JVM(六)——JVM的参数类型

1.标配参数

2.X参数

3.XX参数-Boolean类型

4.XX参数-KV类型

5.如何查看开启了哪些JVM参数

1.标配参数
通常,在我们第一天接触JAVA的时候,我们就接触过标配参数。我们在安装完java环境后,我们会输入以下参数来查看java是否安装成功:
java -version
-help
-showversion

深入理解JVM(六)——JVM的参数类型_第1张图片

2.X参数(了解)
对于X参数,我们平时也不会去碰他,我们常用的javac命令,就是把java文件编译成class文件,那么class文件怎么去执行呢?这里用到了三个X参数来说明class文件怎么在虚拟机里面跑起来的。

-Xint:直接解释执行
解释:由解释器现场解释执行,不生汇编语言或者机器语言。
-Xcomp:先编译成本地代码再执行
解释:编写好的代码首先被编译程汇编语言或者是机器语言,然后执行。多用在高级语言上。
-XMixed:混合模式(既有编译执行也有解释执行)

3.XX参数-Boolean类型(重要)
这是我们在生产中用的比较多的参数类型,我们先来看一看它的格式:

公式: -XX:+或者-某个属性值
+表示开启
-表示关闭

我们先开看一个例子

开启打印GC信息:
-XX:+PrintGCDetails

我们将它填入VM option里,运行起来,我们就会看到垃圾收集信息:

深入理解JVM(六)——JVM的参数类型_第2张图片

深入理解JVM(六)——JVM的参数类型_第3张图片

我们复制一条垃圾收集信息来分析一下:

[GC (Allocation Failure)
[PSYoungGen: 269254K->776K(304640K)]
这条日志表示GC前young区和GC后young区的内存大小区别 ,GC前:269254 GC后:776
670669K->459534K(1000960K), 0.0303594 secs]
这条日志表示堆的总内存大小,GC前670669,GC后459534K
[Times: user=0.05 sys=0.03, real=0.03 secs]
这条表示执行时间。

再来看一条Full GC
[Full GC (Ergonomics)
[PSYoungGen: 235302K->0K(304640K)]
同上,年轻代收集情况
[ParOldGen: 688134K->344783K(696320K)] 923437K->344783K(1000960K),
老年代收集情况
[Metaspace: 3263K->3263K(1056768K)], 0.0394456 secs]
永久代收集情况
[Times: user=0.13 sys=0.02, real=0.04 secs]
耗时

4.XX参数-KV类型(重要)

我们来看一下 KV类型的参数

公式-XX:属性key=属性value
例子:
-XX:MetaspaceSize=128M

我们将JVM的元空间设置为128M。

那可能问题就来了,我们平时的开发中最最最常用的-Xmx和-Xms又是什么参数?

这是因为 -Xmx和-Xms 简写了。

-Xms其实等同于 -XX:InitialHeapSize

-Xmx其实等同于 -XX:MaxHeapSize

5.如何查看开启了哪些JVM参数

我们简单地介绍了一下JVM参数的格式,那么如何查看我们服务中的JVM参数配置呢?

我们先来介绍一个命令 jps -l

这个命令是显示目前所有java进程的命令,我们试着使用一下:

我们先开启命令行窗口

深入理解JVM(六)——JVM的参数类型_第4张图片

接下来,我们输入 jps -l

深入理解JVM(六)——JVM的参数类型_第5张图片

就可以打印出所有JAVA进程了。

前面那一串数字是进程编号,后面那一串名字是进程。

接下来我们查看一下,这个进程开启了什么参数

输入jinfo -flag 参数名 id 可以查看具体的参数配置内容:

image.png

输入jinfo -flags id 可以查看具体的参数配置内容:

深入理解JVM(六)——JVM的参数类型_第6张图片

今天我们就介绍到这里,关于常用的JVM参数,我们将会在下节进行详细介绍。

你可能感兴趣的:(javajvmjvm调优)