使用的JDK版本为jdk1.7.0_79。
一、常用用法
1 | jhat Java堆堆转存快照文件 |
二、含义
解析hprof格式的Java堆堆转存快照文件,运行一个HTTP Server(默认端口为7000)。然后我们可通过http://localhost:7000
网址浏览解析得到的Java堆内存信息。
三、重要说明
3.1、hprof格式的Java堆堆转存快照文件的获取途径
获取途径有:
- 使用“hprof”工具[3]
- 通过“jmap -dump:format=b,file=FILENAME”命令
- 使用“jconsole”工具[4]
- 执行“java”命令时加上“-XX:+HeapDumpOnOutOfMemoryError”虚拟机参数
3.2、更加强大的Java堆堆转存快照文件解析工具
通过http://localhost:7000
网址浏览解析得到的Java堆内存信息主要有两种方式:静态方式和动态方式。静态方式:使用方式和页面含义非常直观,无需额外说明;动态方式:通过Object Query Language语言执行查询,要想获得关于Object Query Language语言的帮助,可访问http://localhost:7000/oqlhelp/
网址。
总的来说,通过jhat命令接口,我们往往“不能快速甚至根本不能”获取一些重要的Java堆内存信息(比如说,获取实例的“Retained Size”[5])。因此,在实际应用中,我们常常使用一些功能更加强大的解析工具,比如“Java VisualVM”,“Eclipse Memory Analyzer(MAT)”,“YourKit”,“JProfiler”等。
参考文献: [1]http://docs.oracle.com/javase/7/docs/technotes/tools/share/jhat.html [2]man jhat [3]http://docs.oracle.com/javase/7/docs/technotes/samples/hprof.html [4]http://docs.oracle.com/javase/7/docs/technotes/tools/share/jconsole.html [5]https://www.yourkit.com/docs/java/help/sizes.jsp