Java中查看堆里的信息

news2025/2/23 18:15:31

文章目录

  • 前言
    • 1 建议无脑的做一件事
    • 2 jmp命令
    • 3 导入 hprof 文件到Visual VM 中
    • 4 查看对象属性值

前言

日常工作中,我们可能会遇到这样的场景:

  • java项目发生了OOM;
  • 想知道在某种场景下,堆里的信息,从而确认一些代码功能是否正常;

类似的情况也是时有发生的,这个时候,我们需要借助java的 jmap命令去看看。
如果你想可视化的查看还得再加上一个插件 Visual VM。

我在这篇文章中,验证内存泄漏时,就使用了这个可视化工具,只能说相当好用:
https://blog.csdn.net/FBB360JAVA/article/details/128943206

插件有两种用法,如果你只是本地运行的话,建议直接在 IDEA 中安装插件,直接debug 运行就可以了。
本文重点是,如果项目是在Linux中跑着,你该怎么查看堆里的内容。

1 建议无脑的做一件事

建议在启动项目时,无脑的增加运行参数如下:

-XX:+HeapDumpOnOutOfMemoryError

这个命令的作用是,在发生 OOM 时,输出堆内信息。
这一点,在阿里巴巴的《码出高效:java开发手册》一书中的JVM篇章也有建议过。
这个命令,对于相隔数月才出现的OOM,或者偶发性的OOM,尤为重要。

另外,这个命令追加参数 HeapDumpPath,可以把堆信息存到文件中,生成 hprof类型的文件,而hprof类型的文件,是可以导入到Visual VM中,可视化查看的。

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=你的目录

2 jmp命令

首先我在本地启动一个SpringBoot项目,然后使用 jps 查看对应的应用端口。
随后使用 jmap 命令,将当前JVM堆内信息数据,导出为test.hprof文件。

C:\Users\Administrator\Desktop>jps
3920 RemoteMavenServer
15716 Launcher
7016 CustomLogStarterTestApplication
8184
8280 Jps
1308

C:\Users\Administrator\Desktop>jmap -dump:format=b,file=test.hprof 7016
Heap dump file created

因为我是在桌面打开的cmd命令框,所以文件生成在了桌面:
在这里插入图片描述

可以看到这个文件还是挺大的。

3 导入 hprof 文件到Visual VM 中

首先我们打开 Visual VM。点击 File -> Load
在这里插入图片描述

然后选择文件类型为 *.hprof,进而再选择你想导入的文件即可。
在这里插入图片描述
导入成功后的内容:
在这里插入图片描述

4 查看对象属性值

首先选择查看类的方式,选择了Packages的方式。
然后在Class Filter中搜索,因为我的包名里有 feng,所以按照这个搜,可以搜索到自己写的包和类。
然后就是想看哪个点哪个。
在这里插入图片描述

这里查看了CustomLogProperties 对象中的 enableCustomLog 的值,看到值是Boolean类型,为 true
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2000道面试必问的Java面试八股文及答案整理(2023版)

说快也快,说不快也不慢! 年前,陆陆续续,好多大厂都在裁员; 年后,又有一大批程序员失业,找不到避风港; 这时候,就有人说了,为什么找工作这么难?…

【技巧】ZIP文件的分卷压缩如何设置 ?

有时候,因为文件过大,我们进行压缩后发现压缩包依旧很大,不方便储存或邮件发送等。 这种情况就需要把文件进行分卷压缩,也就是根据需要的大小,把文件分别压缩成若干个小压缩包。 还不了解的小伙伴,可以看…

入行这几年,我已经快要摸透了软件测试这一行!

目录 前言: 第一年 第二年 第三年 第四年 作为过来人的一些忠告 自动化测试到底应该学什么? 结尾: 前言: 软件测试是通过对软件系统进行测试、诊断和验证,以保证软件系统能够符合用户需求和预期质量标准的过程。 大…

java设计模式之:适配器模式

文章目录 适配器模式定义通用代码实现适用场景案例场景分析一坨坨代码实现适配器模式重构 总结 适配器模式(Adapter Pattern):将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够…

熬夜整理21条避坑指南,细聊该如何让自动化完美运行!

目录 1、引言 2、避坑内容总结 2.1无法定位到元素 2.2 Indentation Error 2.3 PO设计模式类 2.4 页面封装类中没有已定义函数的问题 2.4.1 提示没有该方法 2.4.2 没有定义好的函数 2.5 parater must be str 2.6 继承 2.7 not all arguments curerted during string …

前端web自动化测试:selenium怎么实现关键字驱动

要做 ui 自动化测试,使用关键字驱动可以说是必须会的一种测试方式,它既可以在纯代码的自动化程序中运行,也可以在测试平台中使用。 使用纯代码方式时,自动化工程师先写好一个通用的程序,其他手工测试人员只需要把执行…

Python 中文编码

Python 文件中如果未指定编码,在执行过程会出现报错: #!/usr/bin/python print (“你好,世界”) 以上程序执行输出结果为: File “test.py”, line 2 SyntaxError: Non-ASCII character ‘\xe4’ in file test.py on line 2, b…

接口自动化测试:Python+Pytest+Requests+Allure

本项目实现了对Daily Cost的接口测试: PythonRequests 发送和处理HTTP协议的请求接口Pytest 作为测试执行器YAML 管理测试数据Allure 来生成测试报告。 本项目是参考了pytestDemo做了自己的实现。 1. 项目结构及安装部署 项目结构 api: 接口封装层,…

未来软件测试的5个主要趋势以及软件测试进阶路线

全球各地的企业每天都在发展变化着,以应对市场挑战,满足日益成熟的客户需求。即使是正在进行的技术进步也会使软件测试专家在实践的过程中更加专注和精确。 2021年给软件测试领域带来了新的技术解决方案,以及质量保证和软件测试的实现。与此同…

无线蓝牙耳机哪个品牌好?十款精选的无线蓝牙耳机品牌推荐

蓝牙耳机是一种无线耳机,其通过蓝牙技术与其他设备进行连接,例如手机、电脑、平板电脑等。蓝牙耳机使得用户可以在不受线缆限制的情况下享受音频体验,而且还可以方便地进行通话,目前市场上有许多不同种类和品牌的蓝牙耳机&#xf…

如何利用Python爬虫抓取某眼查网站中的q业信息?

部分数据来源:ChatGPT 引言: 最近在朋友圈看到了一个Python爬虫兼职的机会,但是由于一些原因我没有接到,于是我自己写了一个某眼查搜索结果爬取的Python脚本。下面将分享这个脚本的详细使用教程。 背景 某眼查是一家经营企业信用信息服务的公司,可以通过其网站查询公司信…

ChimeraX - 修改 Multimer 中单链的显示颜色

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131087434 ChimeraX 软件是一款用于分子可视化和分析的先进工具,可以处理大型数据集,支持多种格式,提…

什么是内存溢出?什么是内存泄露?

文章目录 一、什么是内存溢出? 二、什么是内存泄露? 三、如何避免内存溢出和内存泄露? 一、什么是内存溢出? 假设我们JVM中可用的内存空间只有3M,但是我们要创建一个5M的对象,那么新创建的对象就放不进去了…

十四、混合

第一部分 概念: 1) 引入 OpenGL ES 混合本质上是将 2 个片元的颜色进行调和,产生一个新的颜色。OpenGL ES 混合发生在片元通过各项测试之后,准备进入帧缓冲区的片元和原有的片元按照特定比例加权计算出最终片元的颜色值,不再是新…

07SpringCloud Gateway服务网关

目标 目标 1、服务网关 Gateway 2、ServerWebExchange 3、Gateway使用Bucket4j限流 服务网关Gateway API 网关是一个服务,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API 网关封装了系统内部架构,为每个客户端提供一…

数据湖和数据仓库区别介绍

从数据仓库到数据湖 仓库和湖泊 仓库是人为提前建造好的,有货架,还有过道,并且还可以进一步为放置到货架的物品指定位置。 而湖泊是液态的,是不断变化的、没有固定形态的,基本上是没有结构的,湖泊可以是由…

项目上线出Bug!为什么你作为测试没测出来?

材料收集 你服务于一个数据库查询业务,某次客户现场反馈查询某个语句长时间未返回结果,耗时已经远远超过项目对外提供的性能报告承诺给用户最长查询时间。 问题和相关日志已经传递回来,开发人员进行原因分析和故障修复,测试人员进…

Ubuntu系统denyhosts的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、denyhosts是什么?二、安装denyhosts1.下载安装包2.安装3.配置4.启动5.测试 总结 前言 今天服务器又被攻击了,防火墙也打开了&#…

劝退忠告:外包实在是太坑了,划水三年,感觉人都废了

先说一下自己的情况,专科生,19年通过校招进入杭州某个外包软件公司,干了接近3年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了3年的功…

Linux使用者必备-13款厉害到让人怒赞的工具大揭秘

本文介绍几款 Linux 运维比较实用的工具,希望对 Linux 管理员有所帮助。 1、查看进程占用带宽情况-Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。 下载:http://sourceforge.net/projects/nethogs/files/nethogs…