一分钟,教你如何迅速定位OOM

RTCA DO-160G标准详解:航空电子设备的全面环境适应性测试指南 第二章的主要目的是提供标准中使用的术语和定义。了解这些术语对于准确理解标准的要求至关重要,特别是在技术实施过程中。RTCA DO-160G 涉及多个学科的知识,包括航空、电子、电磁学和机械工程,因此需要确保使用的术语在所有学科中具有一致的定义。为了确保测试人员和工程师在执行测试时对所有条件和要求的理解一致,RTCA DO-160G 标准中定义了大量术语。环境应力:指的是设备在操作过程中可能遇到的外部物理或化学条件,包括温度、湿度、振动等。电磁干扰(EMI) 阅读详情

如何迅速定位OOM

u=2187389565,1115017330&fm=26&gp=0.jpg

某Java服务(假设PID=10765)出现了OOM,如何快速定位?

OOM常见原因分析

Java服务出现OOM,最常见的原因是:

  1. 内存确实分配过小,内存确实不够用;
  2. 某一个对象被频繁申请,却没有释放,内存不断泄漏,导致内存耗尽;
  3. 某一个资源被频繁申请,系统资源耗尽,例如:不断创建线程,不断发起网络连接;更具体的,可以按照以下步骤,使用以下工具排查。

OOM定位指南

  • 确认是不是内存本身就分配过小

方法:

 jmap -heap 10765

image

如上图,可以查看新生代,老生代堆内存的分配大小以及使用情况,看是否本身分配过小。

  • 找到最耗内存的对象

方法:

jmap -histo:live 10765 | more

image

如上图,输入命令后,会以表格的形式显示存活对象的信息,并按照所占内存大小排序:

  1. 实例数;
  2. 所占内存大小;
  3. 类名;

是不是很直观?对于实例数较多,占用内存大小较多的实例/类,相关的代码就要针对性review了。

需要说明的是,jmap -histo:live 会执行一次FGC,如果仍无法定位,可dump内存,通过Java内存分析工具MAT**(Memory Analyzer Tool**)**线下进行分析。*上图中占内存最多的对象是RingBufferLogEvent,共占用内存18M,属于正常使用范围。如果发现某类对象占用内存很大(例如几个G),很可能是类对象创建太多,且一直未释放。

例如:
(1)申请完资源后,未调用close()或dispose()释放资源;
(2)消费者消费速度慢(或停止消费了),而生产者不断往队列中投递任务,导致队列中任务累积过多;

  • 确认是否是资源耗尽工具:
1.  pstree
2.  netstat

查看进程创建的线程数,以及网络连接数,如果资源耗尽,也可能出现OOM。这里介绍另一种方法,通过

1.  /proc/${PID}/fd
2.  /proc/${PID}/task

可以分别查看句柄详情和线程数。例如,某一台线上服务器的sshd进程PID是9339,执行:ll /proc/9339/fdll /proc/9339/taskimage

如上图,sshd共占用了四个句柄
(1)0 -> 标准输入;
(2)1 -> 标准输出;
(3)2 -> 标准错误输出;
(4)3 -> socket(容易想到是监听端口);

sshd只有一个主线程PID为9339,并没有多线程。所以,只要

ll /proc/${PID}/fd | wc -l
ll /proc/${PID}/task | wc -l (效果等同pstree -p | wc -l)

就能知道进程打开的句柄数和线程数。

你学会了么?要是觉得有收获,给我点个赞吧~

声明: 本文转自公众号“架构师之路”

请关注我的订阅号

订阅号.png

手把手教你学SOME/IP「3.2.1.发布/订阅行为」 本文详细介绍了SOME/IP协议中的服务发现机制,重点解析了发布/订阅行为的流程。主要内容包括:1)服务发布与Method通信流程,涵盖find/offer报文交互、TTL保活机制及异常处理;2)服务订阅与Event通信流程,包括subscribe/ack报文交互和组播延迟机制;3)特殊场景如快速发送、半周期回复、重置订阅等机制。通过邮局订阅报纸的类比,帮助理解服务发现的核心原理,并强调流程图对于问题定位的重要性。文章为SOME/IP协议的工程实现提供了实用指导。 阅读详情

相关推荐

【SAP PO】SAP PO 接口配置完整教程之一RFC服务发布

SAP RFC开发,PO接口配置

XLevon的博客 2万+

线上排查定位OOM问题的记录

1、分析快照文件的工具建议用eclipse analyzer,而不是jdk自带的jvisualvm。eclipse analyzer的下载地址:http://www.eclipse.org/mat/downloads.php。整体思路:把机器上的快照文件下载到本地电脑,用eclipse analyzer打开它,找到是哪一行导致oom。因为快照文件很大,eclipse analyzer设置的大小阈值也要调成足够大。把该文件下载到本地电脑,可以借助xftp等工具下载。2、解压缩后,先编辑下这个文件。

qq_40306697的博客 313

零中频接收机实战:DC Offset的5种常见解决方案与调试技巧

本文针对零中频接收机中DC Offset这一核心挑战,深入剖析了其产生机理与对信号解调的严重影响。文章从实战角度出发,系统性地介绍了五种解决方案,包括硬件预防、数字域校正、I/Q不平衡联合校正等,并分享了关键的实验室调试与产线测试技巧,旨在帮助射频工程师有效提升接收机性能。

weixin_29234509的博客 395

JVM:全面理解线上服务器内存溢出(OOM)问题处理方案(一)

OOM问题的实际原因各种各样,就像我们开发时遇到的空指针错误,导致的原因可能有很多,但是排查的思路却差不多,大家之所以对OOM问题避而远之,是因为不能直接看到报错的代码位置,这一点需要我们借助jhatjmapMAT等工具来实现。但只要大家多操作,多积累经验,你会发现这个的排查也没有那么难,那么下期我们将结合实际的线上案例,来一起带大家推导OOM问题解决。

55555的博客 8698

手把手教你学Simulink——基于Simulink的多轮PMSM同步驱动交叉耦合控制

摘要:本文针对多轮PMSM同步驱动系统的负载不均、参数差异等问题,提出基于Simulink的交叉耦合控制解决方案。通过实时补偿轮间同步误差,实现同步误差<1%、转矩脉动<5%的性能提升。文章详细介绍了系统架构、核心算法(包括PMSM数学模型和偏差耦合控制算法)、Simulink建模步骤及参数设置,并通过仿真验证了稳态和动态性能。同时提供了工程调试建议和完整代码实现,为多轮驱动系统开发提供实用参考。该方案计算量小,可移植性强,适用于电动汽车、AGV等应用场景。

MHD0815的博客 139

从零开始学 PyTorch 7天路线图(完整可运行代码版)

本文提供了5天PyTorch入门教程的完整代码,涵盖从基础到实战的核心内容。Day1测试环境并介绍张量基础;Day2讲解常用张量操作;Day3演示自动求导机制;Day4实现完整线性回归模型;Day5构建MNIST手写数字识别全连接网络。所有代码可直接运行,包含GPU检测、梯度计算、模型训练和可视化等关键环节,帮助新手快速掌握PyTorch核心概念和典型应用场景。

IT老农民的博客 314

如何定位线上OOM?

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

善守者 1061

第 10 篇:深度学习的“军火库”——CNN、RNN与Transformer,AI如何看懂世界?

深度学习的革命,不是依赖单一的通用大脑,而是为不同任务打造了专属“军火库”:CNN用“局部感知”看懂图像,RNN用“循环记忆”理解序列,而Transformer则用“全局注意力”开启了AIGC时代。理解这些架构,不是记忆孤立的技术,而是洞察AI从“专才”走向“通才”的进化脉络。

maqh_csdn的博客 786

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

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

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

JEDEC JESD51-14 瞬态双界面测试方法详解

(瞬态双界面测试方法,用于测量具有单路径热流的半导体器件的结到壳热阻 RθJC,包括结到壳顶部 RθJCT 和结到壳底部 RθJCB)。该标准于 2010 年发布(版本 JESD51-14.1),旨在提供一种准确、可重复的瞬态方法来测量功率半导体器件(如 MOSFET、IGBT)的结到壳热阻(RthJC),取代传统的稳态测量方法(如 MIL-STD-883E METHOD 1012.1)。方法,通过比较两种不同热界面材料(TIM)下的瞬态温度响应曲线,提取 RthJC,而无需直接测量壳温(Tc)。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 604

使用静态库在嵌入式系统中进行开发

静态库是一种包含预编译对象代码的文件,它可以与应用程序链接在一起,并在编译时将库的代码复制到最终的可执行文件中。静态库是包含预编译对象代码的文件,可以与应用程序链接在一起,并在编译时将库的代码复制到最终的可执行文件中。需要注意的是,由于嵌入式系统的资源限制,开发人员应该仔细选择需要包含在静态库中的功能,并避免引入不必要的依赖关系。需要注意的是,由于嵌入式系统的资源限制,开发人员应该仔细选择需要包含在静态库中的功能,并避免引入不必要的依赖关系。的静态库文件,可以在嵌入式系统的应用程序中使用它了。

ZrElixir的博客 201

线上生产系统OOM监控及定位与解决

可以使用监控工具,如JVM监控工具、应用性能监控(APM)工具等,定期收集内存使用的数据,并记录系统在不同时间段的内存使用情况。线上生产系统的OOM(Out of Memory)是一种严重的问题,表示系统内存不足,无法继续为新的对象分配空间,导致应用程序崩溃。可以使用一些内存分析工具,如MAT(Eclipse Memory Analyzer)等,帮助更深入地分析内存使用情况,找出具体的问题。定位OOM问题时,需要审查代码,查找是否有内存泄漏的情况,例如未及时释放资源、持续增长的数据结构等。

kankan_s的专栏 717

将Keil中的变量数组导出

首先,写好导出数据的函数。

小柚子的博客 1951

用十条命令在一分钟内检查Linux服务器性能

转自: http://www.infoq.com/cn/news/2015/12/linux-performance 如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。 概述 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的

zhhniyniy的专栏 486

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

如何用九条命令在一分钟之内检查linux服务器性能?

如何用九条命令在一分钟内检查Linux服务器性能? 一、uptime命令 # uptime [root@centos7 ~]# uptime 14:17:46 up 3:58, 3 users, load average: 0.00, 0.01, 0.05 这个命令可以快速查看机器的负载情况。在Linux系统中,这些数据表示等待CPU资源的进程...

a270168771的博客 198

ssm框架搭建

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

终面倒计时5分钟:应届生用Arthas破解OOM困局,P8考官紧盯FullGC日志

在终面倒计时的高压时刻,一位应届生在面对系统突然出现的FullGC告警和内存泄露问题时,冷静使用Arthas工具在线诊断问题,迅速定位并解决OOM(Out of Memory)困局。P8考官全程紧盯FullGC日志,对考生的快速反应和专业能力表示高度关注,最终在极限时间下完美化解危机,展现了出色的实战经验和问题解决能力。

Ared 611

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

用十条命令在一分钟内检查 Linux 服务器性能

如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。 概述 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解。 uptime dmesg | tail vmstat 1 mpstat -P ALL 1 pidstat 1 ...

weixin_33973609的博客 73

java性能调试命令_性能测试--十个命令迅速发现性能问题

十个命令迅速发现性能问题uptimedmesg | tailvmstat 1mpstat -P ALL 1pidstat 1iostat -xz 1free -msar -n DEV 1sar -n TCP,ETCP 1top1. uptime$ uptime23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02这是一种用来快速查看...

weixin_42355272的博客 210

FIFO设计详解:从同步队列到异步跨时钟域与格雷码实现

在数字系统和FPGA设计中,数据缓冲与跨时钟域处理是绕不开的核心问题。FIFO(先入先出队列)作为一种基础的数据缓存结构,不仅用于平滑速率不匹配的数据流,更是解决异步时钟域之间安全传递数据的关键手段。从同步FIFO的指针比较与空满判断,到异步FIFO面临的亚稳态挑战,格雷码因其相邻值仅一位变化的特性,成为跨时钟域同步指针的经典解法。理解FIFO的架构原理、参数选取与工程实现,对Verilog开发者、嵌入式工程师以及数据通路设计者都至关重要。无论是图像采集、ADC采样缓冲,还是总线桥接,正确运用FIFO都能显

weixin_34124651的博客 371

26. 60s快速定位服务器性能问题

60s迅速发现性能问题 uptime dmesg | tail vmstat 1 mpstat -P ALL 1 pidstat 1 iostat -xz 1 free -m sar -n DEV 1 sar -n TCP,ETCP 1 top 1、uptime $ uptime 23:51:26 up 21:31, 1 user, load average: 30.02, 26.4...

weixin_38166726的博客 379

如何快速定位linux故障

网络的监测是所有 Linux 子系统里面最复杂的,有太多的因素在里面,比如:延迟、阻塞、冲突、丢包等,更糟的是与 Linux 主机相连的路由器、交换机、无线信号都会影响到整体网络并且很难判断是因为 Linux 网络子系统的问题还是别的设备的问题,增加了监测和判断的复杂度。那么分析问题需要有一定的技术经验积累,并且有些问题涉及到的领域非常广,才能定位到问题。磁盘通常是计算机最慢的子系统,也是最容易出现性能瓶颈的地方,因为磁盘离 CPU 距离最远而且 CPU 访问磁盘要涉及到机械操作,比如转轴、寻轨等。

qq_23930765的博客 238

如何用九条命令在一分钟内检查Linux服务器性能?

如何用九条命令在一分钟内检查Linux服务器性能? 一、uptime命令 # uptime [root@centos7 ~]# uptime 14:17:46 up 3:58, 3 users, load average: 0.00, 0.01, 0.05 这个命令可以快速查看机器的负载情况。在Linux系统中,这些数据表示等待CPU资源的进程...

delay3285的博客 196

性能测试--十个命令迅速发现性能问题

十个命令迅速发现性能问题 """ uptime dmesg | tail vmstat 1 mpstat -P ALL 1 pidstat 1 iostat -xz 1 free -m sar -n DEV 1 sar -n TCP,ETCP 1 top """ 1. uptime $ uptime 23:51:26 up 21:31, 1 user,...

weixin_33854644的博客 179
上一篇: 我和媳妇吵了一架后.....
下一篇: 05. 就该这么学并发 - 线程安全
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

码哥说

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

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

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

打赏作者

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

抵扣说明:

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

余额充值