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

其他对象信息可以进一步进去看详情,这里篇幅有限不在演示示例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/909730.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/909730.shtml
英文地址,请注明出处:http://en.pswp.cn/news/909730.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

freeRTOS之队列(queue)

一.概述 1.介绍 队列(queue)可以用于"任务到任务"、“任务到中断”、"中断到任务"直接传输信息。 2.核心功能 线程安全&#xff1a;自动处理多任务访问时的互斥问题。 数据复制&#xff1a;入队时复制数据&#xff08;而非引用&#xff09;&#xff0c;…

【python】typing用法

一、基础类型提示 1. 基本类型注解 # 变量类型注解 age: int 30 name: str "Alice" is_student: bool False height: float 1.752. 函数注解 def greet(name: str, age: int) -> str:return f"Hello {name}, you are {age} years old!"二、组合类…

web前端开发核心基础:Html结构分析,head,body,不同标签的作用

前端技术协同关系 协作流程&#xff1a;HTML构建页面框架—>css美化样式&#xff08;选择器属性&#xff09;—>JavaScript实现交互&#xff08;类似于python的脚本语言&#xff09;扩展基础&#xff1a;在上面三项基础上学习Vue\React、构建工具WePack和浏览器工作原理…

精益数据分析(105/126):移动应用核心指标解析与用户分层营收策略

精益数据分析&#xff08;105/126&#xff09;&#xff1a;移动应用核心指标解析与用户分层营收策略 在移动应用市场竞争白热化的今天&#xff0c;单纯追求下载量已无法保证商业成功&#xff0c;精细化运营核心指标成为盈利关键。本文将深入解析每日活跃用户平均营收&#xff…

被CC攻击了,对服务器有什么影响?

博客正文&#xff1a; 最近&#xff0c;不少网站管理员和运维人员反映遭遇了CC攻击&#xff0c;导致服务器性能异常甚至瘫痪。那么&#xff0c;CC攻击究竟会对服务器造成哪些影响&#xff1f;本文将为你简要解析CC攻击的原理及其带来的危害&#xff0c;帮助你更好地理解并应对…

Tensorflow安装出现dependency conflict错误

Python版本&#xff1a; 3.11.4 pip版本已升到最新 电脑上有mac的原装Python2.x&#xff0c;我装的3.11.4&#xff0c;还有个什么依赖的3.9 运行 pip3 install tensorflow 出现类似以下错误 &#xff08;我报错的是另一个不是tensorflow—estimator&#xff0c;但基本就是…

2025年HTTP半开与错误攻击防御指南:原理拆解与实战防护

你以为限流就能防住HTTP攻击&#xff1f;黑客用协议畸形包AI调度正在撕裂传统防线&#xff01; 一、HTTP半开攻击&#xff1a;慢速绞杀服务器资源 ▶ 攻击原理剖析 HTTP半开攻击&#xff08;如Slowloris&#xff09;是一种应用层DoS攻击&#xff0c;通过建立大量半开连接耗尽…

Mybatis(XML映射文件、动态SQL)

目录 基础操作 准备&#xff1a; 删除&#xff1a; 新增&#xff1a; 更新&#xff1a; 查询&#xff1a; 条件查询&#xff1a; XML映射文件 动态SQL if foreach sql&include 基础操作 准备&#xff1a; 准备数据库表 创建一个新的springboot工程&#xff0…

python校园拼团系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…

多模态大语言模型arxiv论文略读(127)

When SAM2 Meets Video Camouflaged Object Segmentation: A Comprehensive Evaluation and Adaptation ➡️ 论文标题&#xff1a;When SAM2 Meets Video Camouflaged Object Segmentation: A Comprehensive Evaluation and Adaptation ➡️ 论文作者&#xff1a;Yuli Zhou, …

剑指offer32_二叉搜索树的后序遍历序列

二叉搜索树的后序遍历序列 输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历的结果。 如果是则返回true&#xff0c;否则返回false。 假设输入的数组的任意两个数字都互不相同。 数据范围 数组长度 [ 0 , 1000 ] [0,1000] [0,1000]。 样例 输入&…

《仿盒马》app开发技术分享-- 订单结合优惠券结算(端云一体)

技术栈 Appgallery connect 开发准备 上一节我们已经实现了优惠券的选择&#xff0c;并且成功的把券后的价格也展示给用户&#xff0c;不能使用的优惠券我们也用友好的方式告知用户&#xff0c;这一节我们来实现优惠券内容的下一步&#xff0c;优惠券内容结合订单进行结算提…

Python+Selenium+Pytest+POM自动化测试框架封装

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、测试框架简介 1&#xff09;测试框架的优点 代码复用率高&#xff0c;如果不使用框架的话&#xff0c;代码会显得很冗余。可以组装日志、报告、邮件等一些…

宋代大模型:智能重构下的文明再发现

引言&#xff1a;当汴京城遇见生成式AI 一幅动态的《清明上河图》正通过全息投影技术演绎汴京城的市井百态。这个虚实交融的场景&#xff0c;恰似宋代大模型技术的隐喻——以人工智能为纽带&#xff0c;连接起东京梦华的繁盛图景与数字时代的文明重构。作为人工智能与历史学交…

K-means++:让K-means“聪明”地选择初始中心点

大家好&#xff01;欢迎来到我的技术分享博客~ &#x1f44b; 在前两篇博客中&#xff0c;我们深入探讨了经典的 K-means 算法 以及它的优化方案 Canopy K-means。如果你还没有看过&#xff0c;强烈建议先回顾一下&#xff0c;因为今天的主题 K-means 和它们有着千丝万缕的联系…

Langchain学习笔记(1)——如何调用Huggingface的模型并实现实时返回生成结果

Langchain支持很方便的OpenAI模型的调用&#xff0c;可以做到快速开发大模型应用。但是要使用Huggingface上的开源模型就没有那么方便了&#xff0c;本文就详细阐述如何用Langchain开发基于Huggingface上的模型&#xff0c;并实时返回生成结果。 实时返回生成结果是LLM很关键的…

Java安全-常规漏洞问题(SQL注入,XXE,SSRF,RCE)

靶场搭建 靶场下载 &#xff1a; https://github.com/whgojp/JavaSecLab这个靶场是使用Springboot搭建的所以不要下载 jar 文件运行&#xff0c;要使用IDEA运行他的文件夹 先打开pom 然后进行maven一下 改一下端口 配置完成之后修改一下 运行的模式 使用phpstudy搞一个sql数…

基于视频的 AI 内存库,极速语义检索

简介 在大模型应用里&#xff0c;将文本数据分块嵌入存储在向量数据库已经是标准做法。然而&#xff0c;传统向量数据库虽然功能强大&#xff0c;但其高昂的RAM和存储需求&#xff0c;以及复杂的部署运维&#xff0c;常常让开发者望而却步。今天&#xff0c;介绍一个名为 Memv…

接口适配器模式实现令牌桶算法和漏桶算法

以下是令牌桶算法、漏桶算法和雪花算法的清晰对比解析。它们属于完全不同的技术领域&#xff0c;前两者用于流量控制&#xff0c;后者用于分布式ID生成&#xff1a; 1. 令牌桶算法&#xff08;Token Bucket&#xff09; 领域&#xff1a;流量整形 / 速率限制核心目标&#xff…

618背后的电商逻辑重构:从价格血战到价值共生

“今年终于没做数学题。” 618进行到一半&#xff0c;行云已经买了很多&#xff0c;大件的有iPad、iWatch&#xff0c;小件的有运动鞋、面膜、纸巾。往年她要凑凑减减&#xff0c;经常要找个店铺凑单&#xff0c;下完单再马上退掉&#xff0c;今年她没废太多脑细胞&#xff0c…