JVM性能分析常用的命令

前言:
JVM性能分析常用的命令,包括jstack(查看jvm线程运行状态)、jps(显示本地的java进程及对应进程号)、jstat(监视VM内存工具)、jinfo(输出并修改运行时的java进程的opts)、jmap(查看堆内存使用状况)、jconsole(java GUI监视工具)、jvisualvm(JVM运行监控工具)
注意:在使用这些工具前,先用JPS命令获取当前的每个JVM进程号[pid],然后选择要查看的JVM

jstack

功能

查看jvm线程运行状态,是否有死锁现象等等信息.

常用命令

1
2
3
jstack pid :thread dump   //查看对应进程的jstack的相关语法
jstack –l pid //查看对应的线程信息
jstack –l pid >E:\luxiong.txt //上述结果打印到指定文档

jps

功能

与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号.

常用命令

1
用法命令行(cmd)里打 jps就行了

jstat

功能

jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数.

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//单个参数
jstat -class pid //显示加载class的数量,及所占空间等信息.
jstat -compiler pid //显示VM实时编译的数量等信息.
jstat -gc pid //可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间.
jstat -gccapacity pid //可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量.
jstat -gcnew pid //new对象的信息.
jstat -gcnewcapacity pid //new对象的信息及其占用量.
jstat -gcold pid //old对象的信息.
jstat -gcoldcapacity pid //old对象的信息及其占用量.
jstat -gcpermcapacity pid //perm对象的信息及其占用量.
jstat -util pid //统计gc信息统计.
jstat -printcompilation pid //当前VM执行的信息.
//多个参数
jstat -class pid 250 6 //每250毫秒打印一次,一共打印6次.
jstat -class -h2 pid 250 6 //上述基础上增加每2行显示一下标题.
jstack -gcutil pid 1000 100 //每1000ms统计一次gc情况统计100次
jstat -gcutil pid 2000 >E:luxiong.txt //将上述结果生成指定文件.

jinfo

功能

可以输出并修改运行时的java进程的运行参数(opts).

常用命令

1
2
jinfo -opt pid  //用法示例(opt表示对应参数,如下示例)
jinfo -flag MaxPermSize pid //查看进程pid的MaxPerm大小

jmap

功能

jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本.

常用命令

1
2
3
4
jmap -dump:format=b,file=E:\luxiong.bin pid  //file-保存路径及文件名  pid-进程编号 
jmap -dump:file=E:\luxiong.dump pid //file-保存路径及文件名 pid-进程编号
jmap -histo:live pid //堆中活动的对象以及大小
jmap -heap pid //查看堆的使用状况信息

jconsole

功能

用java写的GUI程序,用来监控VM,并可监控远程的VM,非常易用,而且功能非常强.

常用命令

1
用法命令行(cmd)里打 jconsole,选则相应的进程就行了

jvisualvm

功能

用来监控JVM的运行情况,可以用它来查看和浏览Heap、Dump、ThreadDump、内存对象实例情况、GC执行情况、CPU消耗以及类的装载情况。该工具位于JDK根目录的bin文件夹下面,无需安装,正常装完jdk吼直接在bin目录下运行jvisual.exe即可.

常用命令

1
用法命令行(cmd)里打 jvisualvm,选则相应的进程就可以(功能远比jconsole强大)

解析

(1)概述:显示当前服务器(resin)的整体运行状况
概述.png

(2)监视:可实时动态显示cpu、堆栈、类、线程的相关信息(类似于jconsole的升级版)
概述.png

(3)线程:可实时动态的现实进程的使用状况
概述.png
点击[==线程Dump==]按钮 可以显示具体的进程的内容,可从此页面查看到进程的具体信息以及报错信息(类似于jstack命令的查看结果)
线程Dump.png

(4):显示当前服务器(resin)的整体运行状况
概述.png


参考文档

1.https://blog.csdn.net/u012550080/article/details/81605189
2.http://www.51testing.com/html/38/n-3724238.html
3.https://blog.51cto.com/zero01/2141942

—— 感谢您的阅读 ( ゚∀゚) 有什么疑问可以在下方留言哦 ——
坚持原创技术分享,您的支持将鼓励我继续创作!