什么是jhat 以及jhat的作用
jhat(Java Heap Analysis Tool)命令是用来分析堆转储快照的,jhat命令内置了一个微型
的HTTP/HTML 服务器,生成Dump文件的分析结果后,可以在浏览器中查看。
jhat 命令的语法
jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <file>
jhat分析Dump文件
jhat heapDump //heapDump 为Dump文件名
可以看到服务已经成功启动,端口为7000,访问 localhost:7000 就可以看到分析结果
分析结果默认是以包为单位进行分组显示,分析内存泄漏问题主要会使用到其中的“Heap Histogram”
与OQL页签的功能,Heap Histogram可以找到内存中总容量最大的对象,OQL是标准的对象查询语言,使用
类似SQL的语法对内存中的对象进行查询统计。
首页拉到最下面,可以看到如下信息:
Other Queries 其他几种查询信息方式;
All classes including platform
这个就是我们现在看到的这个了,所有的对象信息显示出来,也是默认的显示方式。
Show all members of the rootset
Show instance counts for all classes (including platform)
显示所有的对象统计信息
Show instance counts for all classes (excluding platform)
显示平台外的所有对象信息
Show heap histogram
显示堆的统计信息
Show finalizer summary
显示finalizer 的统计信息
Execute Object Query Language (OQL) query
进入OQL查询页面
参考资料
- 深入理解Java虚拟机第二版
- Java命令学习系列(五)——jhat