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

前言

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

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

jmap

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

jmap [option] pid  
jmap [option] executable core  
jmap [option] [server-id@]remote-hostname-or-ip  

参数信息:
| 参数| 作用|
| ————- |:————-:|
| -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. 

然后在浏览器访问:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值