Linux版本的MAT(Eclipse Memory Analyzer)内存分析工具使用

news/2025/3/23 2:07:30/文章来源:https://www.cnblogs.com/pxblog/p/18787199

 

首先先下载对应平台的工具

官方地址:https://eclipse.dev/mat/download/

 因为我是arm的架构 所以下载的是arm64的安装包

下载完成后解压 得到以下内容

 

 

 

先修改初始化的启动的内存大小 

vim MemoryAnalyzer.ini

 主要修改这个值 这个要尽量大点 不然我们的内存分析文件很大 会执行不了 

注意:这个需要jdk17及以上才可以  

如果环境有多个jdk版本 可以通过添加配置指定 如下图所示

 

 在上面增加 jdk17的bin目录位置

-vm
/usr/lib/jvm/java-17-openjdk-arm64/bin

 

 

hprof生成


dump可以是内存溢出时让其自动生成,或者手工直接导。配置jvm参数-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/biapp/m.hprof

手工直接导,PID为进程号

jmap -dump:live,format=b,file=m.hprof PID 

其中 pid 可以通过执行  ps -ef|grep  java 看到

 

 

 

 

命令示例  (创建一个单独的目录执行这个,因为执行产生的文件会直接生成在当前目录下)

./ParseHeapDump.sh m.hprof org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components

说明:

1、./ParseHeapDump.sh m.hprof:

     ./ParseHeapDump.sh 是要执行的脚本文件,m.hprof 是你传递给脚本的堆转储文件(heap dump)路径。m.hprof 是一个 .hprof 文件,通常包含 Java 应用程序的内存快照。
2、org.eclipse.mat.api:suspects:

      这个参数指示脚本执行与 "suspects" 相关的分析。suspects 通常是指堆转储中可能存在内存泄漏的地方,脚本会检查哪些对象在堆中占用了大量内存并且可能是泄漏的源头。通常,这些是无法被垃圾回收的对象,它们持有大量   引用,导致内存无法释放。
3、org.eclipse.mat.api:overview:

     overview 是一个分析任务,通常用于生成堆转储的总体概览。这可能包括堆内存的使用情况、对象数量、内存占用最多的类、最大的对象等信息。通过该命令,你可以获得堆内存的概览,帮助你了解内存分配的总体情况。
4、org.eclipse.mat.api:top_components:

      这个参数会请求脚本显示堆转储中内存占用最多的组件或对象。通常,"top components" 是指占用最多内存的类或对象。通过这个分析,你可以识别出内存使用不当或可能引发性能问题的组件。

 

执行成功后 会在当前目录出现以下文件

 

 主要是这几个压缩包,其他都是过程文件, 解压之后 查看这几个文件内容

 

 

 

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

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

相关文章

【CodeForces训练记录】Codeforces Round 1011 (Div. 2)

训练情况赛后反思 B题因为分讨的问题WA了一发,异或还是不大会做 A题 猜猜题,显然对于字符串全部都是一个字母的,无论怎么换字典序都不可能更小,对于其他情况因为可以选择两个字母互换,我们容易观察到对于某一个字符串一定存在一种换法能让字典序更小(无非就是换头或者换尾…

集美大学课程实验报告-实验3:栈、队列与递归

集美大学课程实验报告-实验3:栈、队列与递归项目名称 内容课程名称 数据结构班级 网安2413指导教师 郑如滨学生姓名 林沁茹学号 202421336067实验项目名称 实验3:栈、队列与递归上机实践日期上机实践时间 2学时一、目的(本次实验所涉及并要求掌握的知识点) 以下内容请根据实…

2025-03-22 闲话

2025-03-22 闲话有些闲话是纪实的,它们可能只是平淡的文字。它们可能没有感受,不带思考。你看不到装饰,只有琐碎、补也补不到自圆其说的细节。柴米油盐大抵是这样的。 来北京独居后的生活着实安逸。每天执行一个蛮正常的作息,保证三顿饮食、偶尔晚上和网友去搓搓夜宵。睡觉…

3.22 三重积分计算方法

三重积分的实际意义:计算一个立体的质量(可以) 1 投影法(先一后二)(一个土豆切成土豆丝,最后再累加Dxy平面) 一个立体图形可以看成是两个曲面拼接而成,z=(x,y)可表示一个曲面假设x和y都是确定的,然后就累加z,最后再算面积分 先假设有一条竖线,注意竖线是从哪里进入…

15.数组

数组C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。 数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。数组中的特定元素可以通过索引访问,第一个索引值为 0。声明数组在 C 中要声明一个数组,需要指定元素的类型和元素的数量 下…

逆向中简单的shellcode

做题时遇到了,简单记录一下 一,介绍: shellcode分为广义和狭义,狭义指的仅仅是通过命令行shell攻击靶机,并取得控制权的代码,广义的指能完成类似任务的代码,通常是汇编/机器码。 不过这里是RE,不是PWN,所以不会有靶机,那么在下文指的是广义的shellcode,注入程序,控…

linux一些好用命令:w,fuer,getfacl,usermod,chmod

一.命令 w w 是显示用户登录时间、空闲时间、当前执行的命令等。 2.示例 pst/* : 这是ssh登录 tty: 这是直接本地登录(ctrl+alt +F* 都可以) 这个是没本地登录显示的进程 二. 命令 fuser fuser 是一个可以查看使用此文件的进程号。 1.一般使用 fuser -a /path/to/filename…

Aligning the Objective of LLM-based Program Repair 论文笔记

介绍 (1) 发表 2025-02 ICSE24 (2) 挑战当前方法的推理目标与 LLM 的训练目标没有对齐。现有 LLM-based 方法通常采用 MLM 的方式预测修复代码(然而尽管模型参数被增大百倍但修复结果甚至没有翻一番,这与其他任务的明确可伸缩性形成对比)。因此本文假设在训练中 <masked,…

监狱智能视频分析告警系统解决方案

监狱智能视频分析告警系统解决方案能够精准监测到静坐不动、离床、攀高、独处等行为。例如,当一名囚犯长时间静坐不动时,监狱智能视频分析告警系统解决方案会自动识别并发出预警,以便管理人员及时了解情况,防止囚犯出现自伤、自残等危险行为。在洗手间场景中,系统对入厕超…

昆明理工大学最新《现代材料测试技术》复试真题及答案

-材料测试 昆工材料物理与化学、材料学、材料表征与分析、材料工程、F001现代材料测试技术、864材料科学基础、昆明理工大学材料调剂

RTT 全志D1s跑tina linux

刚毕业那会抽奖抽了一块RTT的D1S开发板,看了一下打印log就放下吃灰了。跑RT-thread的感觉折腾起来太麻烦了就让他吃灰了。最近手头有一块屏幕和一个2欧的小喇叭打算驱动一下。 正好这块板子也出来好多年了。玩一玩。首先我找到了百问网的哪吒开发板他也是D1S的,直接把他的SDK…

COMSOL 基础学习笔记

设置网格 软件通过计算网格顶点的数值,推算其他位置的数值。 行函数:移动的波。 二次行函数(除网格顶点外还计算两定点连线中心的值):网格最大长度 \(≤\frac{λ}{6}\) 一次行函数:网格最大长度 \(≤\frac{λ}{12}\) 修改方式: