想了解Java内存分析工具MAT?看这里哦

  • MAT 简介

    MAT全称为 Eclipse Memory Analyzer Tool ,eclipse基金会开源的java堆内存分析工具,可以快速的进行堆内存分析、大对象可视化、类加载器分析、线程分析等。在我们碰到线上内存问题时候,是不可多得的好工具(当然也有arthas等国产的好工具 XD)

  • 安装

    建议下载独立安装版

    • 进入mat的下载页面

      https://eclipse.dev/mat/downloads.php
      
    • 下载后解压即可

file

  • 手把手案例

    • 创建一个项目,新建测试类

      /*** =====================================================================================** @Created :   2023/9/10 14:42* @Compiler :  jdk 17* @Author :    VINO* @Copyright : VINO* @Decription :* =====================================================================================*/
      public class Product {private String name;private String brand;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}
      }

      main方法测试类

      
      /*** =====================================================================================** @Created :   2023/9/10 14:41* @Compiler :  jdk 17* @Author :    VINO* @Copyright : VINO* @Decription : 测试启动类* =====================================================================================*/
      public class MockMemExample {/*** 模拟无限增长的内存* @param args*/public static void main(String[] args) {List<Product> products=new ArrayList<>();while(true){Product product= new Product();product.setBrand("a");product.setName("b");products.add(product);}}
      }
      

      添加jvm参数

      -Xms24m -Xmx24m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:heapdump.hprof  
      

    file

    • jvm参数介绍

      • -Xms24m

        堆内存最小为24M

      • -Xmx24m

        堆内存最大为24M

      • -XX:+HeapDumpOnOutOfMemoryError
        内存溢出时候自动生成堆内存快照文件,其中**-XX** 表示该参数是非Stable的参数

      • -XX:HeapDumpPath=D:heapdump.hprof
        指定堆内存快照文件生成位置

  • 进行测试

    • 当运行MockExample的测试方法时,报出 Java heap space OOM错误

    • 这表示,列表存储的对象大小超了堆内存设置,众所周知,对象和数组是使用的堆内存。

    -file去看相应的堆内存快照文件,也生成了。

    • 打开MAT,将快照文件导入到MAT中,File->Open Heap Dump…
      file
      选择 Leak Suspect Report

    • file
      file
      file注意这里的 Retained size 和 Shallow Size

      • Retained size

        当对象被GC后能够释放的所有内存大小,从图上可以看到 可释放内存为14.4MB

        • Shallow Size对象自身所占用的内存大小

          对象自身所占用的内存大小

    点击Histogram 可以看到每个类的实例数量及占用内存大小

file
file

可以看到Product类的内存占用比最高

右击 Product这个类,点选 List Objects 可以看到有income和outcome 两个下拉选项

ListObjects 可以查看对象的引用关系

其中

  • with outgoing references

    本对象引用了哪些外部对象

  • with incoming references

    查看该对象被哪些外部对象引用了

​ Leak Suspect Report 报表则提供了 最大可能导致内存溢出的原因

file

file

可以看到是一个List容器装载的问题

点击 stacktrace可以看到堆栈信息

file

file

MAT的使用介绍就到这里了。

SpringBoot Learning系列 是笔者总结整理的一个SpringBoot学习集合。可以说算是一个SpringBoot学习的大集合。欢迎Star关注。谢谢观看。

file
关注公众号不迷路

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

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

相关文章

打工人必装的5款黑科技软件,办公舒适度立刻提升数倍

分享打工人必装的5款黑科技软件&#xff0c;让你高效完成工作&#xff0c;办公舒适度立刻提升数倍。 DroidCam——手机充当电脑摄像头 DroidCam可以让你的手机充当电脑的摄像头&#xff0c;让手机拍摄到的画面实时投送到电脑屏幕上&#xff0c;也可以充当视频聊天的摄像头&…

民安智库(第三方满意度调研公司)公园游客满意度调查内容

设计公园游客满意度调查指标需要仔细考虑&#xff0c;以确保综合评估游客的体验和需求。以下是一些常见的公园游客满意度调查指标&#xff0c;您可以根据具体情况进行定制&#xff1a; 整体满意度评分&#xff1a; 游客对整个公园体验的总体满意度评分&#xff0c;通常以1到10…

import cv2

我看到一段opencv的代码&#xff0c;是在python环境跑的&#xff0c;我的python环境&#xff08;anaconda - jupyter notebook&#xff09;是刚装好的空白环境&#xff0c;没有opencv包。怎么用anaconda安装一个opencv包呢&#xff1f; 他使用了import cv2&#xff0c;我不知道…

Netty核心原理:一、基础入门-03:NettyServer接收数据

文章目录 一、前言介绍二、代码实现2.1 工程结构2.2 Netty服务端接收数据实现2.2.1 服务端处理器2.2.2 通道初始化2.2.3 netty服务端 2.3 单元测试 一、前言介绍 &#x1f4a1; 介绍使用 netty 写一个能接收数据的 socketServer 服务端。 通过实现通道适配器 ChannelInboundHan…

Windows通过RDP异地远程桌面Ubuntu【内网穿透】

文章目录 前言1. ubuntu安装XRDP2.局域网测试连接3.安装cpolar内网穿透4.cpolar公网地址测试访问5.固定域名公网地址 前言 XRDP是一种开源工具&#xff0c;它允许用户通过Windows RDP访问Linux远程桌面。 除了Windows RDP外&#xff0c;xrdp工具还接受来自其他RDP客户端(如Fre…

基于Python和mysql开发的在线音乐网站系统(源码+数据库+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python和mysql开发的在线音乐网站系统(&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经…

【面试题】前端开发中如何高效渲染大数据量?

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 【国庆头像】- 国庆爱国 程序员头像&#xff01;总有一款适合你&#xff01; 在日常工作中&#xff0c;较少的能遇到一次性往页面中插入大量数据的场景…

城市修建(逆天的取值范围) long long, numeric_limits<long long>::max()

城市修建 时间限制&#xff1a;1S内存限制&#xff1a;64MB 描述 有一个城市需要修建&#xff0c;给你N个民居的坐标X,Y&#xff0c;问把这么多民居全都包进城市的话&#xff0c;城市所需最小面积是多少&#xff08;注意&#xff0c;城市为平行于坐标轴的正方形&#xff09; 输…

小白备战大厂算法笔试(六)——堆

文章目录 堆常用操作堆的实现存储与表示访问堆顶元素元素入堆元素出堆 常见应用建堆操作自上而下构建自下而上构建 TOP-K问题遍历选择排序堆 堆 堆是一种满足特定条件的完全二叉树&#xff0c;主要可分为下图所示的两种类型。 大顶堆&#xff1a;任意节点的值 ≥ 其子节点的值…

【Hello Algorithm】贪心算法

本篇博客介绍&#xff1a; 简单介绍下贪心算法 贪心算法 介绍贪心算法最小字典序的字符串拼接最多会议数切棍子的最小成本IPO灯塔问题 介绍贪心算法 贪心算法是一种极具有自然智慧的算法 它会使用以一种局部最功利的标准来做出一个当前看来最好的选择 如果说我们根据局部最优…

更改Windows上的远程桌面的侦听端口

《微软官网更改计算机上的远程桌面的侦听端口》 适用范围&#xff1a;Windows Server 2022、Windows 10、Windows 8.1、Windows 8、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2008 R2 通过远程桌面客户端连接到计算机&#xff08;Wi…

react导出excel?

1、先安装依赖 自行百度搜索或csdn 2.引入&#xff1a;import table2excel from js-table2excel 3、按钮点击事件&#xff08;我是直接写在button按钮里面的 你们也可以写一个店家事件写进去&#xff09; onClick{() > {console.log(list);const column [//数据表单{titl…

目标检测YOLO实战应用案例100讲-森林野火预警的小目标检测

目录 前言 传统目标检测算法 基于深度学习的目标检测算法 两阶段目标检测算法

kill -15 与kill -9的区别

kill -15和 kill -9 是常用的命令&#xff0c;都可以用来杀死进程。 那 kill -15 与 kill -9 有什么区别呢&#xff1f; kill - 后面跟的是信号 比如9、15 进程之间的通信就是让俩个进程之间交互 管道符进程的通信 还有一种就是信号ctrl c&#xff0c;也是信号跟kill一个意思…

【docker】私有仓库搭建

Docker 私有仓库搭建 在 Docker 中&#xff0c;当我们执行 docker pull xxx 的时候 &#xff0c;它实际上是从 registry.hub.docker.com 这个地址去查找&#xff0c;这就是Docker公司为我们提供的公共仓库。在工作中&#xff0c;我们不可能把企业项目push到公有仓库进行管理。…

C高级 第四天

#!/bin/bash#1.实现一个对数组求和的函数,数组通过实参传递给函数 read -p "输入数组" -a arr sum0 function add() {for i in ${arr[*]}do((sumi))done } add arr echo $sum#2.写一个函数,输出当前用户的uid和gid,并使用变量接收结果 function my_id() {num1id -unu…

WebDAV之π-Disk派盘 + 小书匠

小书匠是一款功能丰富,强大的知识管理工具。全平台覆盖,离线数据存储,自定义数据服务器,所见即所得的 markdown 编辑体验。 小书匠提供了多种实用的编辑模式,例如:栏编辑、双栏编辑、三栏编辑、全屏写作、全屏阅读等。并且该软件还提供了许多有用的扩展语法,比如Latex公…

安装vCenter6.7出错 DNS服务原因

https://blog.csdn.net/seaship/article/details/107045006**&#xff21;.VCSA6.7的安装**第1步&#xff0c;运行VCSA 6.7部署程序&#xff0c;中间一些截图参考何老师相关部署文章即可第2步&#xff0c;配置VCSA虚拟机网络&#xff0c;FQDN填写虚拟机分配的IP地址&#xff0c…

SQLite3 操作命令以及c/c++编程API和例子

文章目录 数据库系统SQLiteSQLite数据类型SQLite语句介绍表的创建和查看表的删除插入和修改表数据的删除复制表和修改表结构事务处理函数操作数据分组group by约束联结表视图view触发器trigger日志操作索引 index SQLite c/c编程sqlite3_opensqlite3_closesqlite3_execsqlite3_…

机器人抓取检测技术的研究现状

1.分析法 图 1 为分析法在进行抓取检测时所采用的 一般策略[3] [3]Sahbani A, El-Khoury S, Bidaud P. An overview of 3D object grasp synthesis algorithms[J]. Robotics and Autonomous Systems, 2012, 60(3): 326-336. 首先,基于环境限制和机械手与物体模 型进行抓取检…