软件指南针:专注于软件传播与分享

JDK工具jhat用法详解

来源:原创 1632次浏览 0条评论
☞ 本文主要介绍软件Java的相关内容:JDK工具jhat用法详解

   其下列版本/分支可以参考本文:

  • 全部版本/分支

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

用法摘要

jhat的命令行用法如下:

jhat [ options ] <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。

另请参阅

作者:软件指南针(http://www.softown.cn),转载请保留出处!

用户评论

使用指南 故障排除 0 返回顶部