MemoryAnalyzerTool(mat)分析dump文件

news/2025/1/8 22:46:07/文章来源:https://www.cnblogs.com/MuXinu/p/18660721

一、常见需要分析dump文件场景

1.1 fullGC频繁

1.2 堆空间溢出

1.3 元空间溢出

二、准备工具

能分析dump文件的工具很多比如Java自带的jvisualvm、商业软件Jprofile、mat(MemoryAnalyzerTool)、IDEA等,其他软件都需要将dump文件下载到本地分析,当dump文件很大的时候不方便,mat有linux版本可以直接在服务器上生成报告,将报告导入本地分析以及共享给研发人员分析。本文介绍一下mat(Linux)分析dump文件的过程。

2.1 mat与JDK版本对应关系

Memory Analyzer 1.14 及更高版本 JDK17及以上
Memory Analyzer 1.12 及更高版本 JDK11及以上
Memory Analyzer 1.8 至 1.11 需要 Java 1.8 VM 或更高版本的 VM 才能运行
 
最新版本:https://eclipse.dev/mat/download/
历史版本:https://eclipse.dev/mat/download/previous/
0

三、Linux-Mat分析dump流程

3.1 确认应用及环境jdk版本

选择合适版本,本例服务器jdk版本是1.8可以选择mat1.11及之前的版本

0

3.2 获取.hprof文件

3.2.1 被动获取

新版组件一般都默认开启如下启动参数,内存溢出错误时会自动dumpJVM的内存镜像,当系统发生OOM异常时可以检查当前应用文件夹查看是否存在dump文件。
# 当应用发生oom异常时自动dump
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=gc.hprof

3.2.2 主动获取

如果启动命令没有配置以上参数,当发生OOM相关异常的时候,不要立即重启,建议先进行dump处理,操作命令如下:
jps -l ##或者 ps -aux | grep java 找到对应应用的PIDjmap -dump:live,format=b,file=dump.hprof pid   ##file=dump.hprof指定生成dump文件  pid是应用PID

3.3 调整Mat参数

编辑 MemoryAnalyzer.ini,调整mat参数,-Xmx16g一般设置为dump文件大小的二倍左右,如需指定JDK版本 ,在任何 -vmargs 行之前加入(两行)示例如下:
0
示例:
-startupplugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar--launcher.libraryplugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505-vm /home/yangxz/java/bin/java  #指定JDK版本-vmargs-Xms16g -Xmx16g  #最大堆内存
0

3.4 执行命令生成 zip

nohup ./ParseHeapDump.sh /home/yangxz/test/sdm_oom.hprof org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components & echo $! > pid
命令说明:
nohup ./ParseHeapDump.sh      #后台执行脚本
/home/yangxz/test/sdm_oom.hprof  #dump文件
org.eclipse.mat.api:suspects  # 生成泄漏疑点(Leak Suspects)报告
org.eclipse.mat.api:overview  # 生成堆转储概览报告。
org.eclipse.mat.api:top_components # 生成内存占用最大的组件报告。
生成压缩文件示例:
0
解压后点击Index.html进入报告:
0
报告示例:
0

四、Mat桌面版本分析dump

4.1 下载windows版本mat,并确保本地有安装好Java环境

0
打开后在File里面选择OpenHeapDump打开要分析的hprof文件
0
0
 

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

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

相关文章

DCDC_LDO模块

DCDC/LDO模块 DC-DC 模块和 LDO(线性稳压器)模块是两种常用的电源管理解决方案。它们在电源转换和调节中各有特点和适用场景。以下是对这两种模块的详细介绍,包括它们的工作原理、优缺点、应用场景以及设计考虑。 一、DC-DC 模块 1. 工作原理 DC-DC 转换器通过高频开关元件(…

代码精简之路-模板模式

1. 前言 程序员怕重复CRUD,总是做一些简单繁琐的事情。“不要重复造轮子”,“把基础功能提炼出来封装成工具类” 我喜欢把这些话挂在嘴边,写起来常不知从何下手。 下面拆解一个项目中的功能。记录从复制粘贴到对业务抽象、实现功能分层的详细过程。如何着手提升代码重构优化…

覆铜宽度和电流大小之间的关系,掌握过孔大小与数量与电流大小的关系

覆铜宽度和电流大小之间的关系,掌握过孔大小与数量与电流大小的关系 在 PCB(印刷电路板)设计中,覆铜宽度和过孔的大小与电流处理能力之间的关系是非常重要的。这些因素直接影响到电路的安全性、性能和热管理能力。以下是关于覆铜宽度、电流大小、过孔大小与数量与电流之间关…

一字型布局L型布局的概念和器件摆放方法

一字型布局/L型布局的概念和器件摆放方法 在电子设计中,PCB(印刷电路板)的布局非常重要,而一字型布局和 L 型布局是常见的布局方法。这两种布局方式用于确保电路的稳定性、可制造性和性能。以下是对这两种布局的简要概述,以及器件摆放方法的说明。 一、一字型布局 概念: …

PCB模块

PCB模块 PCB(印刷电路板)模块是在电子设计和应用中非常常见的组件。它们是将电路功能集成到一个统一单元中的关键部分。下面,对 PCB 模块进行详细讲解,包括其定义、类型、应用和设计考虑等方面。 1. 什么是 PCB 模块? PCB 模块是指在印刷电路板上实现特定功能的预制电路板…

掌握一字型布局L型布局的概念和器件摆放方法

掌握一字型布局/L型布局的概念和器件摆放方法 在电子设计中,PCB(印刷电路板)的布局非常重要,而一字型布局和 L 型布局是常见的布局方法。这两种布局方式用于确保电路的稳定性、可制造性和性能。以下是对这两种布局的简要概述,以及器件摆放方法的说明。 一、一字型布局 概念…

掌握电源模块散热的处理

掌握电源模块散热的处理 电源模块的散热设计对于确保电子设备的性能和可靠性至关重要。由于电源模块在转换电能的过程中会产生热量,如果不合理处理散热,可能会导致模块过热,从而影响其工作效率、使用寿命,甚至导致系统故障。以下是电源模块散热处理的一些关键原则和方法: …

浅述中断机制

写在前面 本文重在讨论8086处理器的中断的原理与分类,以及一些中断向量表的内容。由于笔者水平有限,随笔中难免有些许纰漏和错误,希望广大读者能指正。 中断的分类 我们先来看看中断的分类。大体上来说,中断可以分为外部硬件中断、内部中断、软中断。 中断就是打断、暂停的…

浅述实模式下的中断

# 写在前面 本文重在讨论8086处理器的中断的原理与分类,以及一些中断向量表的内容。由于笔者水平有限,随笔中难免有些许纰漏和错误,希望广大读者能指正。 # 中断的分类 我们先来看看中断的分类。大体上来说,中断可以分为*外部硬件中断、内部中断、软中断。* 中断就是*打…

Vue 全局前置路由守卫 全局后置路由守卫

一、位置 src/router/index.jsconst router = new VueRouter({routes:[] })// 这个地方写全局前置路由守卫或 全局后置路由守卫export default router一、全局前置路由守卫 1、时间:初始化时被调用,每次切换前被调用 2、应用场景:控制登录用户的权限 3、语法router.beforeEa…

《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结

《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结@目录3.Docker常用命令3.1帮助启动类命令3.2镜像命令3.3有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubunt…

基于SA模拟退火优化算法的TSP问题求解matlab仿真,并对比ACO蚁群优化算法

1.程序功能描述 基于SA模拟退火优化算法的TSP问题求解matlab仿真,并对比ACO蚁群优化算法,对比两个算法的仿真时间,收敛曲线,以及路径规划的结果,最短路径长度。 2.测试软件版本以及运行结果展示MATLAB2022A版本运行 3.核心程序while t>=Temp1%温度降温判决tfor j=…