在线营销型网站建设,做UI设计的网站,做响应式网站的价格,wordpress文本编辑器jhat是JDK自带的堆转储分析工具#xff0c;可以用来查看.hprof文件中对象的具体内容。本文演示使用的是JKD8.
一、启动jhat
执行启动命令。
jhat -J-Xmx4g your_heap_dump.hprof
-J-Xmx4g表示为jhat分配4GB内存#xff0c;根据你自己情况调整大小。your_heap_dump.hprof是…jhat是JDK自带的堆转储分析工具可以用来查看.hprof文件中对象的具体内容。本文演示使用的是JKD8.
一、启动jhat
执行启动命令。
jhat -J-Xmx4g your_heap_dump.hprof
-J-Xmx4g表示为jhat分配4GB内存根据你自己情况调整大小。your_heap_dump.hprof是dump出来的hprof文件名
回车执行命令后会启动jhat并分析hprof需要稍作等待一下执行效果如下图 浏览器输入http://localhost:7000
即可访问jhat查看对应dump出来的hprof文件内的堆栈信息、对象信息。 二、使用Heap Histogram查询具体实例
在上面的打开的jhat页面拉到最底部会显示jhat带的一些其它工具或者功能。
点击how heap histogram可以使用heap histogram查看堆栈信息实例信息。 然后自己输入关键字搜索自己想看的对象信息比如InMemoryWebSessionStore 点击进去可以看到相关对象信息
三、使用OQL查询dump.hprof文件内具体对象的属性值、内容
OQL(Object Query Language)是JHAT提供的一种查询语言可以帮助你从堆转储(heap dump)中查询和分析对象
OQL类似于SQL但专门用于查询Java堆中的对象。基本结构如下
select JavaScript expression to select
[ from [instanceof] class name identifier
[ where JavaScript boolean expression ] ]
可以查询对象的所有实例实现了某个接口的所有实例对象的实例数等。具体可以查询公开资料。
还以InMemoryWebSessionStore这个类举例查看下系统当前所有的session信息。先看下这个类的源文件
org.springframework.web.server.session.InMemoryWebSessionStore 从源代码可以看出系统的seesion存在InMemoryWebSessionStore对象的sessions属性里是一个ConcurrentHashMap。
在jhat页面下拉到最底部点击“Execute Object Query Language (OQL) query”打开OLQ页面
就像平时写sql一样输入执行语句
select s.sessions from org.springframework.web.server.session.InMemoryWebSessionStore s
点击执行 execute得到查询结果节点查询结果即可看到这个系统具体得session信息 可以看出当前系统有1000个seesion。点击table可以查看具体的session信息 随便找一个对象点击进去看看具体的session信息 查看map value值 可以查看到session的创建时间和state等。这里看下创建时间 将上述时间毫秒值用再现转换工具可知具体时间是2025-06-17 19:10:08 其他对象信息可以进一步进去看详情这里篇幅有限不在演示示例。