JVM自带性能分析工具介绍——jmap和jhat

前言

JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一种工具都有其自身的特点,用户可以根据你需要检测的应用或者程序片段的状况,适当的选择相应的工具进行检测,这里我们就简要介绍下这几个命令的作用和使用方法。

命令 作用
jps 基础工具
jstack 查看某个Java进程内的线程堆栈信息
jmap jmap导出堆内存,然后使用jhat来进行分析
jhat jmap导出堆内存,然后使用jhat来进行分析
jstat JVM统计监测工具
hprof hprof能够展现CPU使用率,统计堆内存使用情况

jmap

jmap(Memory Map)用来查看堆内存使用状况,一般配合jhat命令使用。 
jmap语法如下:

jmap [option] pid  
jmap [option] executable core  
jmap [option] [server-id@]remote-hostname-or-ip  
  • 1
  • 2
  • 3

参数信息: 
| 参数| 作用| 
| ————- |:————-:| 
| -permstat | 打印进程的类加载器和类加载器加载的持久代对象信息 | 
| -heap | 查看进程堆内存使用情况:包括使用的GC算法、堆配置参数和各代中堆内存使用 | 
| -histo[:live] | 查看堆内存中的对象数目、大小统计直方图,如果带上live则只统计活对象 | 
| -dump:format=b,file=dumpFileName | 用jmap把进程内存使用情况dump到文件中,再用jhat分析查看 | 
例子:

jhat

jhat用来对上面dump出来的内容进行分析,他会在服务器上开启一个端口作为web访问的入口,然后将解析出来的数据已web的形式提供访问,这对于某些服务器来说可能不允许其开启端口提供访问。所以也有其他工具可以分析jmap生成的dump文件,比如eclipse里面的插件。

参数 作用
-port 用以指定端口
-J-Xmx512m 指定最大堆内存,以防dump文件太大无法成功解析

这里借用网上其他前辈的图

[esv@storm-master Desktop]# jhat -port 8888 /home/esv/dump.dat   
Reading from /home/esv/dump.dat...  
Dump file created Sat Aug 01 04:21:12 PDT 2015  
Snapshot read, resolving...  
Resolving 411123 objects...  
Chasing references, expect 82 dots..................................................................................  
Eliminating duplicate references..................................................................................  
Snapshot resolved.  
Started HTTP server on port 8888  
Server is ready. 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

然后在浏览器访问: 
JVM自带性能分析工具介绍——jmap和jhat_第1张图片

宁波鼻部整形http://www.iyestar.com/bbzx/

你可能感兴趣的:(JVM自带性能分析工具介绍——jmap和jhat)