【Java命令二】jhat

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

 

 

 

你可能感兴趣的:(Java命令)