jhat是什么

jhat是jdk内置的工具之一。主要是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。

操作步骤

1:导出堆

#jmap -dump:live,file=a.log pid

除了使用jmap命令,还可以通过以下方式:

1、使用 jconsole 选项通过 HotSpotDiagnosticMXBean 从运行时获得堆转储(生成dump文件)

2、虚拟机启动时如果指定了 -XX:+HeapDumpOnOutOfMemoryError 选项, 则在抛出 OutOfMemoryError 时, 会自动执行堆转储。
参数 说明
-Xms20M 最小堆
-Xmx20M 最大堆
-XX:+HeapDumpOnOutOfMemoryError 内存溢出时dump出堆文件
-XX:HeapDumpPath=filePath 文件生成地址
3、使用 hprof 命令

2:分析堆文件

jhat [ options ] heap-dump-file

参数详解

3 : 查看html

jvm监控工具之
对于jhat启动后显示的html页面中功能:
(1)显示出堆中所包含的所有的类
jvm监控工具之
(2)从根集能引用到的对象
jvm监控工具之
(3)显示平台包括的所有类的实例数量
jvm监控工具之
(4)堆实例的分布表
jvm监控工具之
(5)执行对象查询语句
jvm监控工具之

输入内容如:

#查询长度大于100的字符串
select s from java.lang.String s where s.count > 100

详细的OQL可点击上图的“OQL help”

相关文章: