JVM篇-性能查看相关工具

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

一、jps (Java Process Status)

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

1、命令使用

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

在这里插入图片描述

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

1)、jps

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

在这里插入图片描述

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

2)、jps -q

在这里插入图片描述

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

3)、jps -m

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

在这里插入图片描述

在这里插入图片描述

4)、jps -l

在这里插入图片描述

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

5)、jps -v

在这里插入图片描述

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

6)、jps -V

在这里插入图片描述

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

7)、jps -mlvV

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

在这里插入图片描述

二、jstat(JVM Statistics Monitoring Tool)

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

1、使用介绍

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

在这里插入图片描述

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

2)、jstat -class

​ 我们输入jstat -class 17660:

在这里插入图片描述

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

3)、jstat -class <vmid> 1000

在这里插入图片描述

4)、jstat -class -h5 <vmid> 1000

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

在这里插入图片描述

5)、jstat -gc h5 <vmid> 1000

在这里插入图片描述

​ 这个就是展示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 <vmid> 1000

在这里插入图片描述

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

7)、jstat -gccause <vmid> 100

在这里插入图片描述

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

8)、jstat -gccause -t <vmid> 500

在这里插入图片描述

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

三、jinfo (Configuration Info for Java)

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

1、基本介绍

1)、jinfo -help

在这里插入图片描述

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

2)、jinfo -flags

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

在这里插入图片描述

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

3)、jinfo -flag <name>

在这里插入图片描述

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

4)、jinfo -flag [+|-]<name> & jinfo -flag <name>=<value>

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

在这里插入图片描述

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

在这里插入图片描述

5)、jinfo -sysprops

在这里插入图片描述

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

四、jmap (Java Memory Map)

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

1、基本使用

1)、jmap -h

在这里插入图片描述

2)、jmap -histo

在这里插入图片描述

​ 这个就是打印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是查看线程栈信息,可以通过其查看是对有死锁。

在这里插入图片描述

​ 我们输入jstack -l <vmid>查看:

在这里插入图片描述

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

六、jcmd

1、基本介绍

在这里插入图片描述

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

1)、jcmd

​ 直接输入类似与jmap命令

在这里插入图片描述

2)、jcmd <pid> help

在这里插入图片描述

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

3)、jcmd <vmid> VM.flags

在这里插入图片描述

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

4)、jcmd <vmid> GC.heap_info

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值