jhat用于分析使用jmap dump的文件,,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。 jhat默认开启监听端口7000的HTTP服务,jhat是Java Heap Analysis Tool的缩写
1. 用法:
[hadoop@hadoop bin]$ jhat -help
Usage: jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <file>
-J<flag> Pass <flag> directly to the runtime system. For
example, -J-mx512m to use a maximum heap size of 512MB
-stack false: Turn off tracking object allocation call stack.
-refs false: Turn off tracking of references to objects
-port <port>: Set the port for the HTTP server. Defaults to 7000
-exclude <file>: Specify a file that lists data members that should
be excluded from the reachableFrom query.
-baseline <file>: Specify a baseline object dump. Objects in
both heap dumps with the same ID and same class will
be marked as not being "new".
-debug <int>: Set debug level.
0: No debug output
1: Debug hprof file parsing
2: Debug hprof file parsing, no server
-version Report version number
-h|-help Print this help and exit
<file> The file to read
For a dump file that contains multiple heap dumps,
you may specify which dump in the file
by appending "#<number>" to the file name, i.e. "foo.hprof#3".
All boolean options default to "true"
2. 产生堆内存dump文件
[hadoop@hadoop bin]$ jmap -dump:file=dump.bin.002 1819
Dumping heap to /home/hadoop/software/jdk1.7.0_67/bin/dump.bin.002 ...
Heap dump file created
3. 分析堆内存dump文件
提示找到1040038个对象
[hadoop@hadoop bin]$ jhat dump.bin.002
Reading from dump.bin.002...
Dump file created Fri Feb 27 07:53:21 EST 2015
Snapshot read, resolving...
Resolving 1040038 objects...
Chasing references, expect 208 dots................................................................................................................................................................................................................
Eliminating duplicate references................................................................................................................................................................................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
4. UI上查看对象内存使用情况:
在首页底下有如下连接
- 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 --等待回收
- Execute Object Query Language (OQL) query (查询语法点击它自带的连接)