Java系统监控、性能调优工具

Java的监控与性能调优工具很多,除了JDK自带的一些工具外,还有像Jprofilerz这样非常好用的商业工具。下面对JDK自带的一些工具做个简要说明,以便需要时找到最合适的工具。

 

JProfiler在java程序性能调试方面是翘楚,无须赘言,参见:《Jprofiler6的安装与使用说明》。

 

 

下面为JDK自带的一些工具:

 

所有工具都在JDK的bin目录,而在这些工具中,除jvisualvm与jconsole为GUI图形化,其他均为命令行。

 

jps:  即Java Virtual Machine Process Status Tool的缩写,用于查看JVM进程状态的工具。与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。

 

jvisualvm:可监控、性能评估、故障诊断主机上所有java进程的cpu,内存,线程使用情况。

 

jinfo:可以输出并修改运行时的java进程的opts。

 

jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。

 

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 -printcompilation 3024 250 6;含义是,每250毫秒打印一次,一共打印6次。另外,其后也还可以加上-h3这样的参数,每三行显一次标题。

 

jmap:打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。

 

jconsole:可用图表化的形式显示各种数据,并可通过远程连接监视远程的服务器VM。

 

jmap:一个可以输出所有内存中对象的工具,甚至可以将VM中的heap,以二进制输出成文本。用法:jmap -histo pid。如果连用SHELL jmap -histo pid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。jmap -dump:format=b,file=String 3024可以将3024进程的内存heap输出出来到String文件里。

 

jinfo: 用处比较简单,就是能输出并修改运行时的java进程的运行参数。用法:jinfo -opt pid 例如查看2788的MaxPerm大小:jinfo -flag MaxPermSize 2788。

 

jconsole:一个用java写的GUI程序,用来监控VM,并可监控远程的VM,非常易用,而且功能非常强。用法:直接输入jconsole即可。

 

 

 

 

你可能感兴趣的:(java)