虚拟机堆转快照分析工具——jhat

听完公司《JVM应用调试相关脚本》的分享之后,又有同事在邮件里分享了另外一个可以生成html的分析工具叫:jhat (虚拟机堆转快照分析工具)。纯技术的东西,没有啥保密的,我就直接贴过来了,下面是邮件原文,图片弄过来比较麻烦,就暂缺吧。

[quote]
Sun JDK提供的这个jhat(JVM Heap Analysis Tool)命令需要与jmap搭配使用。先dump出来快照,然后再用jhat来分析。

dump_hai.li.bin是我之前dump出来的一个快照。(怎么dump玥老已经讲过了,不赘述)执行命令:jhat D:\dump_hai.li.bin

【缺图】

分析结果:(Jhat内部了一个微型的HTTP/HTML服务器,可以将dump文件分析之后生成html文档,可以在浏览器中查看。。)

【缺图】

如上图:分析结果默认是以包为单位进行分组的,分析内存泄漏问题主要会用到其中的“Heap Histogram”与OQL(Object Query Language)页标签的功能。

前者可以找到内存中最大对象,如图:

【缺图】

后者是标准的对象查询语言,类似SQL的语法对内存中的对象进行查询统计,如图:(旁边的“OQL Help”可以查看相应的查询语法)

【缺图】

但是:这个也就平时自己玩儿的时候用用,在生产环境就不太靠谱儿(主要原因:1-一般生产环境是不建议在部署了应用的服务器上分析,就算如玥老说说的先将服务器摘下来,也不推荐,毕竟是生产使用的环境,而且线上dump的文件通常很大,jhat分析起来效率并不怎么好,而且还很消耗资源;2-另外就是jhat的分析功能相对简陋,做一些基本的分析或者自己学习可以玩玩儿。我想说的是玥老分享的命令行可以更好的按需要定位问题),除非是真的没有其他别的分析工具了。

好吧,分析工具嘛,除了玥老介绍的命令行、Mat1.2.0和JDK自带工具外,还有些专业的产品,如:Eclipse Memory Analyzer、IBM HeapAnalyzzer等。有兴趣的童鞋可以研究研究,当然了,研究之后就是相互交流分享^^(好的预期是能形成一套属于Qunar的jvm解决方案)

Ok,到此为止吧,应玥老分享会上的提醒,偶来回个邮件,分享下玩儿jvm的一点儿经验,欢迎拍砖,前提是你先帮我一起纠正错误的地方,哈哈。
[/quote]

你可能感兴趣的:(java)