OOM日志分析

news2025/4/20 5:12:16

目录

  • 1. 日志分析
  • 2. MAT 工具
    • 2.1 日志打印方式
      • 2.1.1 HeapDumpOnOutOfMemoryError(推荐)
      • 2.1.2 jmp 命令
    • 2.2 MAT分析方式
      • 2.2.1 饼图分析
      • 2.2.2 树形图分析
      • 2.2.2 泄漏疑点
  • 3. 优化

首先说一下结论:通过MAT工具分析才是最精准的,直接通过日志排查可能不是主要原因。

1. 日志分析

直接从日志文件定位 (不精准)
在这里插入图片描述
可以看到这是个 OutOfMemoryError内存溢出异常,Java heap space 表示java堆内存溢出。并且 at org.example.controller.Test.test(Test.java:27) 指定了具体位置,找到具体代码就能定位问题。
在这里插入图片描述
上面的方法不一定是精准的,有可能其他地方占用了百分之80内存,刚好一个低内存方法创建对象的时候OOM,所以这种方式存在误判性。

2. MAT 工具

2.1 日志打印方式

通过打印dump文件通过MAT工具查看。
打印dump文件方式有两种,一种是在启动jar包添加 -XX:+HeapDumpOnOutOfMemoryError (推荐),一种是执行 jmp -dump命令

2.1.1 HeapDumpOnOutOfMemoryError(推荐)

在启动jar包时,添加-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./heapdump.hprof,在服务OOM时会打印dump文件到当前目录heapdump.hprof文件中,然后通过MAT工具查看

例如:通过 nohup java -Xms512m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./heapdump.hprof -jar byzq-yc.jar > ./byzq-yc.log 2>&1 & 启动服务。

将 heapdump.hprof文件拷贝出来,打开MAT工具,选择File -> Open File -> 选择 heapdump.hprof
在这里插入图片描述

加载完后,点击 Finish

在这里插入图片描述

2.1.2 jmp 命令

首先使用 jps 查看进程ID,或者top查看内存较高进程ID,然后使用jmap来生成堆转储文件:

jmap -dump:live,format=b,file=heapdump.dat<PID>

后续跟前面一样,通过mat工具分析即可

2.2 MAT分析方式

2.2.1 饼图分析

直接根据饼图分析,占用最大的这部分多半就是引起OOM的元凶,实际可能会存在多个占用比例比较大的,逐个分析就好
在这里插入图片描述
通过 Java Basics -> Thread Details 或 Thread Overview and Stacks 都可以找到对应的代码位置
在这里插入图片描述
在这里插入图片描述

2.2.2 树形图分析

点击 Dominator Tree 我们能看到线程树形的内存占比
在这里插入图片描述
可以看到这个Object 占比比较高,同样通过 Java Basics -> Thread Details 或 Thread Overview and Stacks 都可以找到对应的代码位置
在这里插入图片描述

2.2.2 泄漏疑点

点击 Leak Suspects 可以直接查看到一个报错信息
在这里插入图片描述
点击Details
在这里插入图片描述
不仅可以查看到一个内存占比,还能查看到报错信息
在这里插入图片描述

3. 优化

分析具体原因后,考虑是代码原因则优化代码。如果代码问题不大则考虑提升堆内存空间

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

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

相关文章

[数据概念]梅宏院士-数据要素化怎么办十问

“ 提出问题&#xff0c;才能解决问题。” 5月27日&#xff0c;2023中国国际大数据产业博览会“数据要素流通与价值化”论坛举行&#xff0c;中国科学院院士、中国计算机学会理事长梅宏发出数据要素化十问。 本文主要内容转自 数字化转型战略指南 01 第一问&#xff1a;能否以…

基于SpringBoot+Vue大学毕业设计管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

【深度学习实战(40)】可变形卷积

一、可变形卷积&#xff08;DCN/DConv&#xff09; (a)是普通的卷积操作 (b)、©、(d)是可变形卷积&#xff08;deformable convolution&#xff0c;即DConv&#xff09; 可变形卷积实际是指标准卷积操作中采样位置增加了一个偏移量offset&#xff0c;这样卷积核就能在训…

Git 冲突处理指南:恢复 Git Reset

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…

市场情绪周期2024-6-12(无用之用篇)

佛学老指引人们去向内求&#xff0c;“灵山就在汝心头&#xff0c;人人有个灵山塔&#xff0c;好在灵山塔下修”&#xff0c;你跟佛有没有缘&#xff0c;在于你是某个阶段不用别人引导自己发现那些东西已经在等你很久了&#xff0c;为何向内求&#xff1f;因为内心才是人之主体…

react使用OpenLayers实现类似船某网在地图放大时展示具体船舶符号缩小时显示聚合小点效果

一、效果 如图所示&#xff0c;地图缩小&#xff08;即比例尺放大&#xff09;时&#xff0c;显示聚合小绿点&#xff1b; 地图放大&#xff08;比例尺缩小&#xff09;时&#xff0c;展示具体船舶符号&#xff1a; 二、思路 1&#xff09;设置2个图层&#xff0c;一个展示…

【区块链】区块链架构设计:从原理到实践

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 区块链架构设计&#xff1a;从原理到实践引言一、区块链基础概念1.1 区块链定义…

解决:net8使用swagger的时候,调用接口401,Error: Unauthorized,无法通过验证,其实是因为没有Authorization头

目录 1. 背景2. 解决方案 1. 背景 上一篇文章讲了用net8JWTSwagger&#xff0c;尝试做一个demo&#xff0c;然后掉坑里&#xff0c;jwt能生成token&#xff0c;但是解析不正确&#xff0c;地址&#xff0c;这个demo还遇到一个奇怪的问题&#xff0c;一个demo遇到2个奇怪的问题…

Leetcode84 柱状图中最大的矩形

题目描述 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积 解题思路 思路一&#xff1a;暴力寻找&#xff0c;从每个位置出发&#xff0c;向左右两边扩…

上证所抓包实战

第 2 页jsonCallBack 回调函数Request Headers爬取股票列表下载时间戳Initiator在 Network 中抓到的包,有 Headers、Payload、Preview、Response、Initiator、Timing、Cookies 面板,从这些面板中获取有用的信息来写脚本。 上海证券交易所 https://www.sse.com.cn/assortment…

数据分析必备:一步步教你如何用matplotlib做数据可视化(10)

1、Matplotlib 二维箭头图 箭头图将速度矢量显示为箭头&#xff0c;其中分量(u&#xff0c;v)位于点(x&#xff0c;y)。 quiver(x,y,u,v)上述命令将矢量绘制为在x和y中每个对应元素对中指定的坐标处的箭头。 参数 下表列出了quiver()函数的参数 - x - 1D或2D阵列&#xff0c;…

示例:推荐一个基于第三方QRCoder.Xaml封装的二维码显示控件

一、目的&#xff1a;基于第三方QRCoder.Xaml封装的二维码控件&#xff0c;为了方便WPF调用 二、效果如下 功能包括&#xff1a;背景色&#xff0c;前景色&#xff0c;中心图片设置和修改大小&#xff0c;二维码设置等 三、环境 VS2022 四、使用方式 1、安装nuget包&#xf…

国产自研编程语言“仓颉”来了!

在 6.21 召开的华为开发者大会&#xff08;HDC2024&#xff09;上,华为自研的国产编程语言“仓颉”终于对外正式发布了&#xff01; 随着万物互联以及智能时代的到来&#xff0c;软件的形态将发生巨大的变化。一方面&#xff0c;移动应用和移动互联网领域仍然强力驱动人机交互…

抖音多功能全自动引流工具,支持评论关注私信留痕点赞等,让你的抖音粉丝暴涨!

随着短视频行业的火爆&#xff0c;越来越多的人开始关注抖音这个平台。然而&#xff0c;如何在抖音上获得更多的关注和粉丝&#xff0c;成为了许多人面临的难题。为了帮助大家解决这个问题&#xff0c;今天我们将为大家推荐一款抖音多功能全自动引流脚本&#xff0c;这款脚本可…

【Python】已解决:ModuleNotFoundError: No module named ‘paddle’

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;ModuleNotFoundError: No module named ‘paddle’ 一、分析问题背景 在Python编程中&#xff0c;ModuleNotFoundError是一个常见的错误&#xff0c;它通常发生…

Linux - 利用/proc/sys/vm/drop_caches实现手工清理系统缓存

文章目录 现象buff/cache 的作用和含义分析 buff/cache 占用大量内存的原因是否需要清理缓存及其方法 命令清理缓存方法1. sync 命令2. echo 3>/proc/sys/vm/drop_caches 命令 注意事项小结 现象 使用free 命令&#xff0c;看到 buff/cache 占用很多 。 free 命令用于显示系…

很冷门但真的有趣的IOS应用

Tuesday Tuesday纪念日小组件是一款功能丰富的倒数日和桌面小组件工具APP。此外&#xff0c;Tuesday软件还具有超萌小清新的风格&#xff0c;界面设计清新可爱&#xff0c;适合各种场景使用。用户可以通过小组件实现各种趣味功能&#xff0c;满足不同心情需求。 SideNotes Si…

外排序(C语言实现)

前言 本篇博客讲解一下外排序&#xff0c;看这篇排序你的先去看一下&#xff1a;八大经典排序算法-CSDN博客 &#x1f493; 个人主页&#xff1a;普通young man-CSDN博客 ⏩ 文章专栏&#xff1a;排序_普通young man的博客-CSDN博客 若有问题 评论区见&#x1f4dd; &#x1f3…

【七】【QT开发应用】跨UI发送信号,跨线程发送信号

跨UI发送信号 基本框架 新建窗口 自定义信号 跨线程发送信号 新建线程 查看线程号 完整代码 跨UI发送信号 setdialog.h #ifndef SETDIALOG_H #define SETDIALOG_H#include <QDialog>namespace Ui { class setdialog; }class setdialog : public QDialog {Q_OBJECTpub…