JDK工具jhat用法详解

jhat(Java Heap Analysis Tool),是JDK自带的Java堆内存分析工具。

用法摘要

jhat的命令行用法如下:

jhat [ options ] <heap-dump-file>

有时你dump出来的堆很大,在启动时会报堆空间不足的错误,可以使用如下参数:
jhat -J-Xmx512m <heap dump file>

参数

options选项参数.如果使用,请直接跟在命令名称之后。heap-dump-file指定用于浏览的Java二进制heap dump文件。对于一个包含多个heap dump的dump文件,你可以在文件名称后面追加”#<number>”来指定文件中的某个dump,例如:foo.hprof#3

描述

jhat命令解析一个java heap dump文件并启动一个web服务器。jhat使得你可以使用自己喜欢的web浏览器浏览heap dump。jhat支持预先设计的查询语言(例如’show all instances of a known class “Foo”‘)以及OQL(对象查询语言) — 一种用于查询heap dump的、类似于SQL的查询语言。你可以通过jhat显示的OQL帮助页面查看关于OQL的帮助信息。在使用默认端口的情况下,OQL的帮助信息位于http://localhost:7000/oqlhelp/

有以下几种方式可以生成一个Java heap dump:

  • 使用jmap -dump选项获取一个运行时的heap dump。
  • 使用jconsole选项通过运行时的HotSpotDiagnosticMXBean获取一个heap dump。
  • 通过指定-XX:+HeapDumpOnOutOfMemoryErrorVM选项,在抛出OutOfMemoryError错误时,将会生成一个heap dump。
  • 使用hprof

注意:此工具具有实验性质的,并不保证在未来版本的JDK中可用。

选项

-stack false/true
关闭跟踪对象分配调用堆栈。注意,如果heap dump中的分配位置信息不可用,你必须设置此标识为false。此选项的默认值为true
-refs false/true
关闭对象的引用跟踪。默认为true。默认情况下,反向指针(指向给定对象的对象,又叫做引用或外部引用)用于计算堆中的所有对象.
-port port-number
设置jhat的HTTP服务器的端口号。默认为7000。
-exclude exclude-file
指定一个数据成员列表的文件,这些数据成员将被排除在”reachable objects”查询的范围之外。举个例子,如果文件列有java.lang.String.value,那么,当计算指定对象”o”的可达对象列表时,涉及到java.lang.String.value字段的引用路径将会被忽略掉。

-baseline baseline-dump-file
指定一个基线heap dump。在两个heap dump(当前heap dump和基线heap dump)中存在相同对象ID的对象,不会被标记为”new”。其他的对象将被标记为”new”。这在比较两个不同的heap dump时非常有用。
-debug int
设置此工具的调试级别。0意味着没有调试输出。设置的值越高,输出的信息就越详细。
-version 
报告版本号并退出。
-h
输出帮助信息并退出。
-help 
输出帮助信息并退出。
-J<flag> 
将运行时参数传递给运行jhat的JVM。例如,-J-Xmx512m设置使用的最大堆内存大小为512MB。

Another Article with pics:

http://blog.csdn.net/gtuu0123/article/details/6039474

5 Responses so far.

  1. quest bars says:
    What i don’t understood is in fact how you’re now not actually much more smartly-liked than you might be right now.

    You’re so intelligent. You understand thus considerably when it comes
    to this subject, made me individually believe it from a lot of various angles.
    Its like women and men aren’t fascinated except it’s one thing to accomplish with Lady gaga!

    Your personal stuffs great. Always care for it up!

  2. Quest Bars says:
    Thanks very nice blog!
  3. quest bars says:
    Hi there, its good post about media print, we all be aware of media is a great source of information.
  4. 区别成功与失败者,是看他敢于冒险不。
  5. Jude Minks says:
    Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You clearly know what youre talking about, why waste your intelligence on just posting videos to your site when you could be giving us something enlightening to read?

LEAVE A COMMENT