0%

jhat命令

使用的JDK版本为jdk1.7.0_79。

一、常用用法

1
jhat Java堆堆转存快照文件

二、含义

解析hprof格式的Java堆堆转存快照文件,运行一个HTTP Server(默认端口为7000)。然后我们可通过http://localhost:7000网址浏览解析得到的Java堆内存信息。

三、重要说明

3.1、hprof格式的Java堆堆转存快照文件的获取途径

获取途径有:

  1. 使用“hprof”工具[3]
  2. 通过“jmap -dump:format=b,file=FILENAME”命令
  3. 使用“jconsole”工具[4]
  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
您的支持将鼓励我继续分享!