jvm oom内存溢出,导出dump,使用mat进行问题分析

JVM-通过MAT工具对dump文件进行分析_mat分析dump文件(1) MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,看看是谁阻止 了垃圾收集器的回收工作,并可以通过报表直观的查看到可能造成这种结果的对象。 阅读详情

前言

  当需要的内存空间大于系统分配的内存空间时,发生OOM;客户线上环境基本每2周挂一次,暂时编写了脚本自启动应用,需要去定位原因


1.生成Dump文件

1.1 让JVM在遇到OOM(OutOfMemoryError)时生成Dump文件

在应用中添加JVM参数:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/log/sdc

1.2 在服务僵死时,jmap导出

执行jmap -dump:format=b,file=文件名 进程对应的pid

如:

jmap -dump:format=b,file=sdc.hprof 124108

在这里插入图片描述

file:保存路径及文件名
pid:进程编号(linux通过ps aux查看)


2. 分析dump文件(使用eclipse的mat图形化工具)

mat工具下载
在这里插入图片描述
注: 生成环境使用的版本为jdk8,最新的mat不支持,需要用 之前发行的版本,使用1.11.0版本
在这里插入图片描述

2.1 下载windows版本,直接打开(若dump文件很小)

2.2 下载linux版本,上传到服务器后解压(若dump文件很大)

进入解压后的mat目录,查看所有文件:

在这里插入图片描述
编辑MemoryAnalyzer.ini,调大最大使用内存
在这里插入图片描述

配置完成后,在服务中分析dump文件./ParseHeapDump.sh dump文件路径 org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components

./ParseHeapDump.sh /data/log/sdc/sdc.hprof org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components

在dump文件所在的路径下生成报告文件
在这里插入图片描述

把报告文件拷贝到本地磁盘
在这里插入图片描述


3. 打开分析报告

3.1 使用浏览器浏览

  解压缩以.zip结尾的文件,解压后,使用浏览器打开index.html文件内容,查看分析报告

查看内存泄漏排查: 查看对象占据内存空间的比例
在这里插入图片描述

查看线程:
在这里插入图片描述

3.2 使用eclipse的mat工具


JVM实战(一): dump文件的产生以及执行shell脚本 如何配置jvm参数,在OOM时生成dump文件并执行shell 脚本 阅读详情

相关推荐

如何通过MAT分析内存溢出的问题

1.使用 Memory Analyzer Tools 获取堆存储,点击Open Heap Dump,选择上面运行获取的错误信息文件(工具分析的时候会在dump文件所在的文件夹中生成其他文件,最好是将dump文件单独放到一个空文件夹中)注意:如果dump过大打不开,因为服务器上一般出问题的dump都会好几个G,这是MAT的运行内存不足没办法分析过大的dump,所以就要修改MAT运行参数。具体看你分析的dump有多大,来修改运行内存,因为我分析的dump将近7个G,所以就设置了8000m。

weixin_47276069的博客 1214

JVM 启动参数详细解析:运行模式-堆内存-日志相关-垃圾收集器

JVM作为java运行环境最重要的一部分,通过对java启动命令指定不同的参数以此让虚拟机达到最佳运行状态和行为这里对jvm参数进行总结和分析,希望能给大家带来帮助,同时如果有不足之处还望指出。 Java 启动命令程序的格式为: java [options] classname [args] java [options] -jar filename [args] options: 命令行...

qq_38130094的博客 1275

JVM OOM问题排查与解决思路

JVM OOM 是一个复杂但常见的问题,它可能出现在堆内存、永久代/元空间、栈内存或直接内存等区域。排查 OOM 的关键在于启用诊断选项(如堆转储和 GC 日志)、分析错误日志和堆转储文件、检查垃圾回收日志。解决 OOM 的方法包括增加内存、优化代码、调优垃圾回收器参数和管理外部资源。持续监控和预警机制可以有效预防 OOM 问题的发生。

m0_74969835的博客 1455

【快速定位生产问题】

一个方法中如果只有使用局部变量,这个局部变量发生OOM,堆内存溢出,但是局部变量的生命周期是跟随这个方法的栈帧,方法异常结束后,会释放这部分空间。或者Eclipse Memory Analyzer (MAT)打开,查看占用百分比,打开后可以看每个实例,占用堆的大小…可以用jdk自带的 jvisualvm 装入,就在jdk的bin目录上(jvisualvm.exe),类型选堆。一个方法如果使用成员变量,并且对这个变量的操作导致OOM堆内存溢出,那么方法结束并不会释放空间。开启这个参数,并指定路径。

qq_45494908的博客 1909

堆内存溢出自动生成DUMP文件

如果发生了内存泄露,如果好重现,使用JVisualvm,或者jmap,Jprofiler进行Heap Dump,使用MAT进行分析。快照格式为java_pid2821.hprof(2821为Java进程号)-XX:+HeapDumpOnOutOfMemoryError :当内存溢出时触发java.lang.OutOfMemo: Java heap space。-XX:HeapDumpPath=/opt/heap·: 内存溢出时,保存内存快照文件。VisualVm和MAT。

3144

基于openEuler配置LAMP,部署WordPress

openEuler 基于OpenEular操作系统部署WordPress,必须包含以下内容: OpenEular的安装与基本配置。 基于SSH远程管理方式开展操作。 部署LAMP环境。 部署WordPress软件。 提供个人网站服务,并通过浏览器测试应用。 简要讲授相关知识与原理。 cd /etc/yum.repos.d 欧拉系统安装后,没有配置yum源,我们需要重新配置。 [root@localhost yum.repos.d]# ls -l 总用量 4 -rw-r--r--

Axiayouqiaomu的博客 6080

-XX:HeapDumpPath生成目录注意点

使用-XX:HeapDumpPath配置的时候,需要保证目录的文件夹都是存在,因为它在到处dump文件的时候,不会帮你去创建不存在的目录。 使用相对路径: nohup java -Xms512M -Xmx512M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./ -jar order-0.0.1-SNAPSHOT.jar >/...

u010772230的专栏 3万+

LIN总线从入门到精通:低成本汽车通信协议原理与实战

在汽车电子和嵌入式系统中,串行通信协议是实现分布式控制的关键技术。其中,LIN(Local Interconnect Network)总线作为一种专为低成本应用设计的单主多从网络协议,其核心原理在于通过简化的“领导-汇报”通信模式,在满足车身控制、传感器数据采集等场景需求的同时,将硬件与布线成本降至最低。LIN总线采用标准化的帧结构,包含间隔场、同步场和受保护标识符场,并依赖调度表来管理通信时序,确保了网络的确定性与可靠性。其技术价值在于为车窗、座椅、灯光等非安全关键系统提供了高性价比的解决方案,是构建分层

weixin_29185167的博客 260

JVM:记录一次因为查询量过大导致的OOM问题(四)

其实整个分析过程是比较顺利的,一是因为该问题埋的不深,二是因为本身对业务有一定了解,大概会猜测出现问题的点,所以在排查时顺着怀疑方向会快速很多。后续大家在排查此类OOM问题时,也可以先了解有风险的业务点,有一定的预估后进行排查会顺利很多。

55555的博客 1365

centos8 安装新版bind9源码

bind一直在更新,使用了比较多的新架构 本文记录新版本的bind怎么安装,以及其依赖库的安装 1. 在https://www.isc.org/download/ 下载最新stable版本bind,本文以bind-9.17.9.tar.xz为例。将软件传到/root目录下。 也可以到https://ftp.isc.org/isc/bind9/ 下载更多历史版本 2. 安装基本的依赖库,像gcc、amake等 3. 需要安装libuv库,但直接用yum时可能安装不全 建议使用源码安装,需要安..

linggang_123的博客 2538

STM32G474片内运放实战:从独立模式到PGA与ADC采样链路

在嵌入式控制系统中,运放是连接模拟信号与数字处理的关键环节。传统方案依赖外部分立运放搭建放大电路,存在成本高、PCB布局敏感、一致性差等痛点。STM32G474在MCU内部集成多路可编程运放(OPAMP),支持独立模式、跟随器、PGA以及比较器模式,配合内部ADC和DMA可构成完整模拟采集链路。通过片内互联,信号路径大幅缩短,抗干扰性和通道一致性显著提升,尤其适用于电机电流采样、数字电源等场景。本文以STM32G474为例,详解从独立模式到PGA增益配置,再到ADC与DMA联动调试的完整过程,并给出采样时间

weixin_29194255的博客 246

Eclipse MAT分析内存案例

本文记录一次使用Eclipse MAT排查内存问题的案例,缘由是线上某服务OOM,排查得知jvm old区占满,但是gc也无法释放。

qq_31086797的博客 1248

LVGL的基础知识总结

另外,还有自定义字库的使用,具体可参考开发手册。

qq_28576837的博客 7383

Java 内存溢出(OOM)排查实战指南:从复现到 MAT Dump 分析

摘要:本文介绍了Java中OOM(内存溢出)问题的排查方法。首先解释了OOM的常见类型和原因,包括堆空间不足、本地缓存无限增长、内存泄漏等。通过Demo演示了如何快速复现OOM并生成Heap Dump文件。重点讲解了使用MAT工具分析Dump的步骤:查看Leak Suspects报告、Histogram统计、Dominator Tree分析以及Path to GC Roots追踪引用链。最后给出了修复OOM的常见方法,如限制缓存大小、优化数据结构等。文章提供了完整的OOM排查流程,帮助开发者快速定位和解决内

Knight 3574

dify安装ollama插件及OLLAMA模型添加失败问题完整解决方法

plugin_daemon-1 | 2025/05/10 17:37:36 stdio.go:160: [INFO]plugin langgenius/ollama:0.0.6: Installed model: ollama 提示ollama安装成功,再添加模型就不会有问题了。安装dify1.2.0和1.3.1均出现OLLAMA插件安装失败或插件安装后添加模型失败的问题,具体表现为一是添加ollama插件时没反应,需要二次添加才成功;二是添加模型时点保存报500错误或点保存后没反应,无法成功添加。

symstandsun的博客 9077

Python接入企业微信群机器人图文教程,实现恐贪指标自动触发微信消息提醒功能!Python 企业微信 群机器人 消息提醒 Webhook 企业微信接口

✅ 企业微信群机器人的添加方式;✅ 如何获取 Webhook 地址;✅ Python 如何用 requests 发消息;✅ 如何在实际业务中触发自动提醒;这种方式不仅适合个人开发者、测试人员,也适用于小团队、运维通知等场景,部署简单、触发灵活、响应及时!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 914

java oom dump_本地模拟内存溢出并分析Dump文件

java Dump文件分析前言dump文件是java虚拟机内存在某一时间点的快照文件,一般是.hprof文件,下面自己模拟一下本地内存溢出,生成dump文件,然后通过mat工具分析的过程。配置虚拟机参数要想本地模拟oom异常,那么建议将堆内存设置的小一点,那样容易触发-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${目录} -Xms20m -Xm...

weixin_36071315的博客 1385

数学建模学习(5):最全概率分析之图表绘制详解,内容比较多,建议收藏

(1) 绘制正整数频率使用 tabulate(X) (2)

全栈川川 4591

如何分析 JVM OOM 内存溢出 Dump 快照日志

参数配置,即便是发生OOM也不会生成对应Dump文件。这种情况就需要排查定位内存溢出的原因(总不能任由他宕机),不过默认情况JVM内存溢出导致宕机并不会生成。方式来启动Java进程,所以需要先构建Docker镜像,我这里使用。,不过我个人不习惯使用MAT(还得单独安装),不如直接通过。企业开发过程中,如果系统服务客户量比较大,偶尔会出现。问题,导致服务发生宕机,停止对外提供访问。,开发就很难找到本次内存溢出的原因。上述构建配置文件,如果没有。此时,就可以把容器内的。

保持学习 1198

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

利用性能分析工具MAT分析OOM

OOM介绍 1、OOM,全称“Out Of Memory”,计算机内存被耗尽,JVM没有办法继续给新对象分配空间,而报出的错误,属于严重错误。 2、产生原因: 内存溢出:JVM本身分到的内存空间较少,无法提供充足的内存空间,可以通过启动参数VM进行调节 内存泄漏:内存被是用完之后没有被释放,无法重复使用该内存,那这段内存就是泄露状态 注:JVM的垃圾回收机制会自动释放掉没有使用的对象的内存,...

shenzhou_yh的博客 2106

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OOM故障排查指南:生成 JVM 内存快照并使用快照分析工具定位问题

Heap Dump是 JVM 堆内存的静态快照,它记录了堆内存中所有对象的详细信息,包括:对象的类型和数量。对象的大小。对象的引用关系。通过分析 Heap Dump,开发者可以快速定位内存泄漏、内存占用过高或其他内存相关问题。排查OOM故障的关键在于生成和分析堆内存快照(Heap Dump)。通过使用JProfiler和VisualVM等工具,开发者可以快速定位内存泄漏、内存分配过大或资源竞争等问题。生成 Heap Dump通过 JVM 参数自动生成,或使用 IDEA 内置工具手动生成。

秃头之旅 2399

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Java开发300个实用技巧】101.内存溢出MAT分析dump文件

CyclicBarrier是Java并发编程中的重要工具,具有重用特性,允许多个线程在达到屏障点后重新出发,与一次性同步工具如CountDownLatch不同。本文深入探讨了CyclicBarrier的重用机制,包括其底层原理、典型应用场景和常见错误用法。通过Generation对象,CyclicBarrier实现了生命周期管理,确保在多阶段任务和数据分片处理中的高效协同。文章还提供了性能优化技巧,如结合线程池和使用超时机制,并总结了最佳实践,如屏障监控和防御式编程。掌握CyclicBarrier的重用精髓

1637

JVM离线分析-使用MAT分析dump堆文件

官方介绍简要说明:MAT用来分析jvm的内存信息,内存信息包含两方面对 dump 文件建立多种索引,并基于索引来实现内存分布、对象间依赖、对象状态、条件检索这四大核心功能,并通过可视化展现辅助 Developer 精细化了解 JVM 堆内存全貌。 分析堆文件 MAT的直方图和jmap的-histo命令一样,都能够展示各个类的实例数目以及这些实例的Shallowheap总和 with outgoing references:此对象引用了哪些对象, with incoming references:此对象被谁引

guo20082200的博客 3837

使用MAT定位线上OOM问题

1.造成OOM的原因 一次性申请的太多 找到未释放的对象进行释放(找到未释放的) 本身资源不够(jmap -heap查看堆信息) 2.如何定位oom 系统已经OOM挂了 提前设置-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath= 系统运行中还未OOM 导出dump文件:jmap -dump:format=b,file=xushu.hprof 14660 结合jvisualvm进行调试 查看最多跟业务有关对象 -> 找到GcRoot -&gt.

毛瞌羊的博客 1087
上一篇: linux rsync文件远程增量同步、编写集群文件同步脚本xsync.sh
下一篇: mapreduce作业提交源码解读(创建不同模式下的runner、在工作区间生成切片规划文件和配置文件后提交)
但行益事莫问前程
但行益事莫问前程 新星创作者: 数据库技术领域 新星创作者: 数据库技术领域
博客等级 码龄7年 8490粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但行益事莫问前程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值