jhat
分析Java堆内存信息。
语法
jhat [ options ] heap-dump-file
解释
jhat命令用于在WEB服务器中解析Java堆dump文件,默认端口7000;
支持OQL(Object Query Language),帮助信息http://localhost:7000/oqlhelp/,OQL执行位置http://localhost:7000/oql/;
heap-dump-file是Java堆的二进制文件。每一个文件中包含多个堆的dump,可以通过在文件后加#number(默认是1)的方式指定查看哪一个dump;
$ jhat C:\\Users\\username\\Desktop\\test
Reading from C:\Users\username\Desktop\test...
Dump file created Tue Dec 31 09:56:08 CST 2019
Snapshot read, resolving...
Resolving 585372 objects...
Chasing references, expect 117 dots.....................................................................................................................
Eliminating duplicate references.....................................................................................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
$ jhat C:\\Users\\username\\Desktop\\test#2
Reading from C:\Users\username\Desktop\test#2...
Dump file created Tue Dec 31 09:56:08 CST 2019
Snapshot read, resolving...
Resolving 0 objects...
WARNING: hprof file does not include java.lang.Class!
WARNING: hprof file does not include java.lang.String!
WARNING: hprof file does not include java.lang.ClassLoader!
Chasing references, expect 0 dots
Eliminating duplicate references
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
生成Java堆dump的方式
jmap -dump命令,请查看jmap;
jconsole通过HotSpotDiagnosticMXBean生成,请查看;
hprof命令,请查看;
Options
stack true|false
关闭跟踪调用栈分配对象信息(object allocation call stack),默认是true,如果Java对dump中没有对象分配信息,则必须设置为false;
refs true|false
关闭跟踪对象引用信息,默认是true;默认情况下为所有文件计算后向引用,对象被指向指定对象如引用或者传入引用;
port number
指定jhatHTPP服务器的端口,默认7000;
exclude exclude-file
指定一个文件,该文件列出了应从可达对象查询中排除的数据成员;
baseline exclude-file
指定一个基线堆dump,两个堆转储中具有相同对象ID的对象都标记为不是新对象,其他对象被标记为新对象。在对于比较两个不同的堆dump时非常有用;
debug int
设置debug级别,0表示没有debug信息输出,设置值越高输出越详细;
version
输出版本信息
h help
输出帮助信息
J flag
将flag信息传递给运行jamp命令的虚拟机
其他文章列表