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 (查询语法点击它自带的连接)