BUG列表:如何定位线上 OOM ?

Android 线上 OOM 的排查过程 作者:王晨彦 开篇 一天,后台统计到线上有大量 OOM 崩溃,小王收到老板的紧急指令,立即排查! 小王心想,这还不简单,待我看看崩溃堆栈,分分钟解决。 于是小王不慌不忙的打开崩溃后台,一看傻眼了,同样的 OOM,却有几十种不同的堆栈,大到创建 View,小到 new 一个 String。 小王差点骂了出来:这 OOM 不讲武德啊! 骂完之后,还是得解决问题啊,否则怎么面对老板啊 心路历程 正郁闷着,小王突然想起曾经看过性能优化的文章,里面介绍了 Android Studio 中集成的 Profiler . 阅读详情
可能情况:
  • 一次性申请的数据太多
    • 方案 : 分页
  • 内存资源耗尽,未释放资源(属于内存泄漏)
    • 找到未释放的资源,进行释放
    • 方案 : 池化
  • 本身资源不足
    • jmap -heap 【进程ID】 : 查看堆信息
    • 调整堆内存的方案 :
如何定位:
  • 已经 OOM

    • 提前设置Dump文件 :

      Step1 : -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=[文件路径]

      Step2 : 用 visualvm 载入 Dump文件 ,选择堆。

      Step3 : 用工具查看,如

      ​ 查看跟业务有关的对象(消耗的内存较大)-> 找到GCRoot -> 查看线程栈

  • 还未 OOM

    • 导出dump文件:

      jmap -dump:format=b, file=[dumplog].hprof 【进程ID】

JProfiler实战:从线上OOM告警到精准定位内存泄漏的完整分析流程 在Java应用性能优化与故障排查领域,内存分析是诊断线上OOM(OutOfMemoryError)问题的核心技术手段。其核心原理是通过获取JVM堆内存的转储快照(dump文件),冻结问题发生瞬间所有对象的状态与引用关系,从而还原内存消耗的完整现场。这项技术的核心价值在于,它能将抽象的内存消耗转化为具体的对象图谱,帮助工程师精准定位内存泄漏、不合理对象持有或数据结构膨胀等根因问题,是保障服务稳定性的关键技能。典型的应用场景包括线上服务内存使用率异常飙升、频繁Full GC、以及性能压测中的内存瓶颈分析。本文将 阅读详情

相关推荐

分析定位Java问题利器: MAT 和 Arthas 使用

今天,介绍如何使用JVM堆转储的工具MAT来分析OOM问题,以及如何使用全能的故障诊断工具Arthas来分析、定位高CPU问题。

只有变秃 才能变强 1417

如何定位线上OOM?

然后用jvisualvm这个工具载入dump文件,选择堆类型。提前设置OOM后生成一个dump文件(.hprof)利用history命令也可以看到对象。随意点开一个,找到GCROOT。利用jps可以找到java线程。找到未释放的对象进行释放。

善守者 1061

53期-如何排查JVM在微服务架构下的OOM问题

OOM 是 “Out of Memory” 的缩写,指的是计算机或其他设备在尝试分配内存时,发现可用内存不足,无法满足请求的情况。OOM 错误通常会导致程序崩溃或者系统运行变慢,甚至可能导致整个系统出现不稳定的情况。导致OOM问题的原因通常有两个:1、内存泄露,一般是由于代码导致的,使用完的对象内存没有及时释放,越累计越多,最终耗尽内存2、内存需求过大,某些操作或数据结构需要大量内存。例如,加载非常大的文件、处理大规模数据集或者创建大量对象。

你不是叶秋的博客 862

【一看就懂,如何定位解决jvm发生OOM问题】

通过上述步骤,我们可以系统性地排查和解决JVM OOM问题。关键在于理解OOM异常的类型、捕获详细的异常信息、分析GC日志和堆Dump文件,以及采取相应的解决措施。持续监控和预警机制也可以帮助预防OOM问题,确保应用的稳定运行。

qq_33545255的博客 1224

线上JVM排查与优化

本文介绍了线上JVM常见问题及排查方法。主要工具包括JDK内置的jps、jstat、jmap、jstack和jcmd,以及可视化工具VisualVM、MAT和Arthas。重点分析了CPU使用率高、OOM、GC问题和线程阻塞等问题的解决步骤:如使用jstack分析高CPU线程,jmap生成堆转储排查OOM,jstat监控GC情况优化内存参数,以及通过线程栈分析死锁。文章还提供了GC日志分析建议和启动参数配置,帮助开发者快速定位线上JVM问题。

m0_62967939的博客 1059

Arthas实战(2)- OOM问题排查

Arthas实战(2)- OOM问题排查

java_liuyuan的博客 2486

记录一次线上OOM问题排查处理过程

项目为docker部署的springboot单体项目(非前后端分离),前端文件是集成在项目的类路径的resources路径下的。2. 接下来一顿度娘,发现可以使用Memory Analyzer做分析,于是到官网下一波: https://www.eclipse.org/mat/downloads.php。系统目前没什么用,主要是客户分公司在基础数据模块录入数据比较多,目前系统数据记录条数在122W+。以上就是自己总结的内存溢出排查方法,大家可以参考,欢迎大佬指正!

andy7_的博客 626

[OOM] hbase堆外内存溢出底层定位

单台服务器刚发布时 java 进程占用3g,以一天5%左右的速度增长,一定时间过后进程占用接近90%,触发服务器报警,而此时 old 区占用在 50%,未触发 CMS GC,而导致堆外内存溢出。本文记录了完整的排查过程,涉及 JVM、hbase 读写源码、JDK 原理、MAT 等排查工具使用。

列苗 3568

OOM问题快速线上定位原因和排查

OOM快速线上定位欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mark

豪代码的博客 2858

qmc5883p芯片坐标系方向定义

问题 最近一个项目用到qmc5883p, 然而确定磁力计方向的时候发现datasheet上写的不是很清楚, 并且example中还有一个设置方向的一步, 于是测试了芯片坐标方向并记录了下来; 该芯片和qmc5883L方向并不一致; 结果 qmc5883P的datasheet给出来如下说明, Y为笔者添加的; 但是这个方向是按照datasheet的example设置的结果: //Define the sign for X Y and Z axis qmc5883p_write_reg(0x2

时有限 4115

无监督学习与互信息

在机器学习中,获取大量高质量标注数据成本高昂。为解决此问题,无监督学习利用丰富的无标注数据成为研究重点。其中,互信息是衡量两个随机变量之间依赖关系的关键指标,能够捕捉非线性统计关联,非常适合处理非结构化数据。通过最大化神经网络中变量间的互信息,可以有效地从无标注数据中提取有用信息,提升模型在下游任务(如分类)的性能。互信息与熵密切相关,其值等于联合分布与边缘分布乘积间的KL散度,也可通过熵与条件熵的差值得出,具有对称性,并反映了已知一个变量后另一个变量不确定性的减少。

盼小辉丶的博客 3536

线上服务内存OOM问题定位三板斧

线上服务内存OOM的问题,是最难定位的问题,不过归根结底,最常见的原因:本身资源不够 申请的太多 资源耗尽某服务器上部署了Java服务一枚,出现了OutOfMemoryError,请问有可能是什么原因,问题应该如何定位? 不妨设服务进程PID为10765(没错,就是CPU占用高的那个进程。解决思路 Java服务OOM,最常见的原因为:有可能是内存分配确实过小,而正常业务使用了大量内存 某一个对象

******* ▄︻┻┳═一 ******* 3792

vue3 - element-plus表格组件el-table实现鼠标拖曳排序功能,vue3 Table表格拖拽排序,表格每行使用鼠标拖动进行排序功能,表格拖拽排序实现(详细示例代码,一键复制开箱即用

vue3,elementPlus,el-table,typescript,表格组件,Table表格,表格拖动排序,表格拖曳排序,鼠标拖拽表格进行排序功能,elementplus表格如何实现拖动每行进行排序操作,表格拖动改变顺序,鼠标拖曳,表格内的数据项拖拽排序,vue3如何实现element-Plus表格组件进行表格内的数据项拖拽排序,列表拖拽排序效果,实现table动态拖拽,鼠标拖着排序,vue3 element Plus 表格拖曳拖动拖拽 排序,el-table拖拽排序实现,表格内容拖拽重新排序,树形表

✅ 精选推荐文章 1万+

记一次 Android 线上 OOM 的排查过程

开篇 一天,后台统计到线上有大量 OOM 崩溃,小王收到老板的紧急指令,立即排查! 小王心想,这还不简单,待我看看崩溃堆栈,分分钟解决。 于是小王不慌不忙的打开崩溃后台,一看傻眼了,同样的 OOM,却有几十种不同的堆栈,大到创建 View,小到 new 一个 String。 小王差点骂了出来:这 OOM 不讲武德啊! 骂完之后,还是得解决问题啊,否则怎么面对老板啊 心路历程 正郁闷着,小王突然想起曾经看过性能优化的文章,里面介绍了 Android Studio 中集成的 Profiler ..

chuyouyinghe的专栏 310

基于Pascal VOC数据集的YOLOv8目标检测系统实现:人、鸟、猫、牛、电视、车等20类目标识别与UI界面部署全流程详解

VOC 2007、VOC 2012 两个主要版本;每个图像提供 bounding box(目标框)+ 目标类别;共计 20 类,所有图像手工标注,质量高。完整复现 Pascal VOC 20类检测任务成功训练 YOLOv8 模型实现可视化 UI + 实时检测系统支持多平台部署和演示。

YOLO 771

ardupilot 获取避障传感器数据

本节主要记录自己学ardupilot的避障代码过程,首先看下怎么注册避障传感器,然后怎么获取避障数据。

陌城烟雨 5524

一次不讲武德的 Android 线上 OOM 的排查过程

作者:王晨彦 开篇 一天,后台统计到线上有大量 OOM 崩溃,小王收到老板的紧急指令,立即排查! 小王心想,这还不简单,待我看看崩溃堆栈,分分钟解决。 于是小王不慌不忙的打开崩溃后台,一看傻眼了,同样的 OOM,却有几十种不同的堆栈,大到创建 View,小到 new 一个 String。 小王差点骂了出来:这 OOM 不讲武德啊! 骂完之后,还是得解决问题啊,否则怎么面对老板啊。 心路历程 正郁闷着,小王突然想起曾经看过性能优化的文章,里面介绍了 Android Studio 中集成的 Profiler.

初一十五的博客 344

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.5 RTC设备编写与实现

4. Linux kernel RTC子系统goldfish_rtc driver分析。电脑,会需要时间,还比如 我们的手机、平板,都需要时间;驱动基本就是应用层需要什么数据你给什么数据就行,基本必须实现的就是。3.2 Linux kernel RTC 设备描述符讲解。中看到他的具体实现,也可以根据他的寄存器描述直接在。5. 将驱动添加进kernel和测试RTC驱动。系统来说,时间是一个非常重要的功能;之类的函数接口,接下来我们就开始讲解如何写。,所以我们直接移植设备树即可。,他的寄存器很简单,你可以从。

DSMGUOGUO的博客 568

快速定位bug

快速定位bug一、响应报错 4XX 客户端报错 400 Bad Request 403没有权限 404 路由不存在 413 request entity too lang 请求体过大 1、修改nginx client_max_body_size 默认1m 配置文件 2、修改tomcat大小 server.tomcat.max.http.post.size 默认2m 3 、修改单个请求文件大小...

sinat_30071601的博客 830

【MATLAB】嵌入式PID控制参数整定与优化

本文提出了一种基于MATLAB仿真的嵌入式PID参数优化方法,解决了传统人工试凑法效率低、适应性差的问题。通过建立一阶滞后被控对象模型,对比分析了不同PID参数组合的性能表现,筛选出最优参数。仿真结果表明,优化后的PID参数能有效降低超调量(从传统方法的显著超调降至接近0%),缩短调节时间,提高稳态精度。最终将优化算法部署到STM32平台,实现了"仿真整定-参数优化-嵌入式落地"的完整开发流程。该方法显著提升了嵌入式系统的响应速度和控制精度,为工业控制应用提供了标准化解决方案。

unber的博客 45

精雕软件(JDpaint) 5.5 绿色版

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

java oom 分析_实战:OOM 后我如何分析解决的

现在很多面试官都会关心你是否有过解决内存泄漏的问题,是否有过JVM的调优经验。你如果没有经历过,该如何回答呢?希望下文对你有所帮助。背景前不久,上线了一个新项目,这个项目是一个压测系统,可以简单的看做通过回放词表(http请求数据),不断地向服务发送请求,以达到压测服务的目的。在测试过程中,一切还算顺利,修复了几个小bug后,就上线了。在上线后给到第一个业务方使用时,就发现来一个严重的问题,应用大...

weixin_30700095的博客 357

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

druid的java占位符条件查询,惨遭DruidDataSource和Mybatis暗算,导致OOM

先遭DruidDataSource袭击事发一个平凡的工作日,我像往常一样完成产品提出的需求的业务代码,突然收到了监控平台发出的告警信息。本以为又是一些业务上的bug导致的报错,一看报错发现日志写着java.lang.OutOfMemoryError: Java heap space。接着我远程到那台服务器上,但是卡的不行。于是我就用top命令查了一下cpu信息,占用都快要到99%了。再看看GC的日...

weixin_29746595的博客 1076

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Monkey测试Bug排查全攻略

本文介绍了Android Monkey健壮性测试中的Bug排查日志分析技术指南。Monkey测试通过随机事件模拟用户操作检测应用稳定性。文章详细解析了常见错误类型(Fail、Error、OOM、ANR等),提供了日志分析技巧和错误识别方法,并给出系统化的Bug排查步骤。同时推荐了相关分析工具,提出预防措施和最佳实践,包括代码优化、资源管理和测试策略等。最后强调日志分析对提升应用健壮性的重要性,建议将排查流程集成到持续集成中。

2202_75677328的博客 2251

java bug 检查_Java进程突然挂掉排查分析手记(jvm bug)

排查1:查看系统资源情况主要发现此刻CPU均突然增长,swap内存也有所增长但是并非资源耗尽的情况。此刻想到了Linux进行OOM-killer机制。排查2:查核系统内核是否触发oom机制。日志:/var/log/message --一般oom信息这里会找到,但是排查没有相关kill和内存信息。参考命令dmesg了解:https://www.oracle.com/technetwork/arti...

weixin_33793620的博客 699

一次 OOM 排查(dump文件分析)

上个版本有代码发布的同学,排查了一遍新增代码,没找到可疑之处。问题就在查询这块,没兜住,直接查询出 百万条 记录,导致内存在接下来的 30分钟 逐渐被占满。既然运维侧不给力,那就只能靠平时多观察下这个应用的情况,一有怀疑情况就找对应运维同学。恰好,被我抓到一次,直接坐到运维同学旁边,让其帮我上容器帮我 dump 一份数据。既然知道是 OOM,那就找对应 OOM 生成 dump 文件,分析即可。运维侧反馈来不及 dump 文件,就重启了,导致dump文件丢失。最后,那我又是如何得到这个 dump 文件的?

m0_69632475的博客 930
上一篇: 手把手教你Spring-AI实战,从入门到精通(一):用Google GenAI 完成文本嵌入的实战
下一篇: Git 版本管理重要撤回操作
Yiyi_Coding
博客等级 码龄1年 2粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值