JVM篇-性能查看相关工具

这篇我们来分析下JVM中自带的一些命令分析工具。

一、jps (Java Process Status)

​ 通过其能看到系统中所有的HotSpot虚拟机进程,通个其就能看到当前正在进行的Main类。

1、命令使用

​ 实首先我们通过jps -help来看下:

JVM篇-性能查看相关工具_第1张图片

​ 前面的usage就是其的用法,可以看到其的初始是分为-q&mlvV,这个的意义按正则表达式理解,也就是这两个以及后面的那些参数是能混合使用的。这里我们先运行我们的MyJvm类。

1)、jps

我们首先输入jps命令来看下:

JVM篇-性能查看相关工具_第2张图片

​ 这里就能看到我们的MyJvm运行的pid即为15932

2)、jps -q

JVM篇-性能查看相关工具_第3张图片

可以看到这个-q的参数是简化,只显示pid

3)、jps -m

​ 这个参数是展示在启动Main的时候传入的程序参数:

在这里插入图片描述

JVM篇-性能查看相关工具_第4张图片

4)、jps -l

JVM篇-性能查看相关工具_第5张图片

这个我们可以,其不只是简单的展示Main类的名称,还会将其的包名也带上。

5)、jps -v

在这里插入图片描述

​ 这个命令就是JVM相关的参数

6)、jps -V

JVM篇-性能查看相关工具_第6张图片

​ 这个参数应该就是不输入默认带的,可以看到其与直接输入jps是一样的

7)、jps -mlvV

​ 我们将这些参数一起使用,就能看到详细信息

在这里插入图片描述

二、jstat(JVM Statistics Monitoring Tool)

​ 这个是用来监视虚拟机的各种状态的,例如垃圾收集、内存等。

1、使用介绍

1)、我们同样像前面一样输入jstat -help

JVM篇-性能查看相关工具_第7张图片

​ 这里vmid就是pid(必选<>),后面的interval是间隔,也就是间隔多久打印一次、count是打印的次数

2)、jstat -class

​ 我们输入jstat -class 17660:

在这里插入图片描述

​ 可以看到这里有展示加载的类数量&占有的字节数、卸载的类。

3)、jstat -class 1000

JVM篇-性能查看相关工具_第8张图片

4)、jstat -class -h5 1000

​ 我们看一个比较贴心的参数-h&n,间隔多久打印表头:

JVM篇-性能查看相关工具_第9张图片

5)、jstat -gc h5 1000

JVM篇-性能查看相关工具_第10张图片

​ 这个就是展示JVM关于GC相关的一些内容。首先我们来分析头部的字段意义:首先是最后面的C&U,其中C表示是总容量。例如S0C就表示S0区的容量,然后S0U表示S0去已经使用的容量。

​ 然后我们来分析前缀:S0-S0区、S1-S1区、E-eden区、0-old区、M-方法区CCS-压缩类空间YGC-年轻代发生GC的次数YGCT-年轻代发生GC的时间FGC-Full GC发生的次数FGCT-Full GC发生的次数GCT-垃圾回收的总时间

6)、jstat -gcutil 1000

JVM篇-性能查看相关工具_第11张图片

​ 这个gcutil是用来展示每个区的空间占比的。

7)、jstat -gccause 100

JVM篇-性能查看相关工具_第12张图片

​ 这个我们可以看到就多了导致GC的原因,其中LGCC就是表示最后一次发生GC的原因,GCC就是表示当前GC的原因。

8)、jstat -gccause -t 500

JVM篇-性能查看相关工具_第13张图片

​ 这个我们加了参数-t其表示当前JVM已经启动了多长时间。

三、jinfo (Configuration Info for Java)

​ 用于查看&修改JVM的选项配置。

1、基本介绍

1)、jinfo -help

JVM篇-性能查看相关工具_第14张图片

这里是基本的使用介绍,下面我们来看下其的具体使用

2)、jinfo -flags

​ 我们使用-Xlog:gc* -Xmx120M -Xms120M -XX:+UseParallelGC -XX:+PrintFlagsFinal运行

JVM篇-性能查看相关工具_第15张图片

​ 这个就是查看被设置的JVM选项。

3)、jinfo -flag

在这里插入图片描述

​ 这个是选择具体的某个选项获取其的key-value

4)、jinfo -flag [+|-] & jinfo -flag =

​ 这个就是设置一个布尔选项是使用还是不使用,或者一个值类型的选项的具体的值,注意,这个只有某些参数才能该。

在这里插入图片描述

​ 只有manageable类型的参数才能在运行的时候动态的注解修改

JVM篇-性能查看相关工具_第16张图片

5)、jinfo -sysprops

JVM篇-性能查看相关工具_第17张图片

​ 这个就是展示系统参数。

四、jmap (Java Memory Map)

​ 这个是分析JVM内存相关的内容

1、基本使用

1)、jmap -h

JVM篇-性能查看相关工具_第18张图片

2)、jmap -histo

JVM篇-性能查看相关工具_第19张图片

​ 这个就是打印JVM中的实例对象,然后可以加:live参数,表示只打印存活的对象。

3)、jmap -dump

在这里插入图片描述

​ 导出堆使用情况的dump文件,其是二进制文件,不能直接阅读.

​ 这是我们主动触发导出,但我们在前面文章也有介绍参数HeapDumpOnOutOfMemoryErrorHeapDumpPath这个就是设置当发生OOM的时候JVM自动导出dump文件供我们分析,例如我们使用-Xlog:gc* -Xmx120M -Xms120M -XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:\err.bin -XX:+PrintFlagsFinal

​ 这个dump文件可以通过JProfilevisualvm这些工具分析。

五、jstack

​ jstack是查看线程栈信息,可以通过其查看是对有死锁。

JVM篇-性能查看相关工具_第20张图片

​ 我们输入jstack -l 查看:

JVM篇-性能查看相关工具_第21张图片

​ 这里就能看到我们当前的线程信息,例如当前的状态RUNNABLE、然后synchronizers锁持有相关的内容。

六、jcmd

1、基本介绍

JVM篇-性能查看相关工具_第22张图片

jcmd能实现上面各种命令的功能,类似于万能钥匙。

1)、jcmd

​ 直接输入类似与jmap命令

JVM篇-性能查看相关工具_第23张图片

2)、jcmd help

JVM篇-性能查看相关工具_第24张图片

以这种方式,指定具体的JVM进程号,然后在追加选项参数。

3)、jcmd VM.flags

JVM篇-性能查看相关工具_第25张图片

​ 这个就是打印JVM的运行选项参数。

4)、jcmd GC.heap_info

JVM篇-性能查看相关工具_第26张图片

你可能感兴趣的:(JVM,java,jvm)