当前位置: 首页 > news >正文

嵌入式linux设备内存泄露排查思路

文章目录

  • 引言:
  • 一、快速确认
  • 二、定位泄露源(内核态/用户态)
    • 2.1 检查内核内存
    • 2.2 检查用户态进程
  • 三、使用工具排查泄露点
  • 四、修复与验证

引言:

设备自己跑着跑着突然挂死了,还是靠看门狗给救回来了。这种时候,一定要考虑是不是内存泄露导致内存耗尽了。
那我们来看看内存泄露点该如何快速确定和定位吧?
整体思路就是确认现象 -> 定位泄漏源(内核态/用户态)-> 使用专业工具精排查泄露点 -> 修复并验证

一、快速确认

首先我们要确认是否存在内存泄露,排除内存正常消耗(如缓存、缓冲区增长)。

观察系统整体内存趋势:使用free -h和top命令,长时间观察used内存或available内存是否持续增长,即使系统负载平稳。

观察进程级内存:使用top或ps aux,关注RES(常驻内存)和VIRT(虚拟内存)字段,看特定进程的内存是否只增不减。

二、定位泄露源(内核态/用户态)

2.1 检查内核内存

查看/proc/meminfo,掌握内存全局变化趋势。先读一次,等一段时间再读一次,对比变化。

# 把/proc/meminfo的内容写到meminfo_start.txt里cat/proc/meminfo>meminfo_start.txt# 等一段时间,把/proc/meminfo的内容写到meminfo_end.txt里cat/proc/meminfo>meminfo_end.txt# 可以用diff命令对比,或者用beyond compare对比以下diffmeminfo_start.txt meminfo_end.txt

虽然返回了很多东西,但是我们一般只需要关注:

  • MemAvailable是否一直在减小,减小说明可用的内存一直在减少,可能存在泄露。
  • Slab是否一直在增加,说明可能存在内存泄露。

下面也附上所有项目的含义:

MemTotal: 系统总内存的大小(单位:kB)。 MemFree: 当前可用的空闲内存的大小(单位:kB)。 MemAvailable: 估算的可以被新启动的应用程序使用的内存量(单位:kB),比 MemFree 更加准确反映实际可用内存。 Buffers: 用作缓存页缓冲区的内存大小(单位:kB)。 Cached: 用作页缓存的内存大小(单位:kB),用于存放已打开文件的数据。 SwapCached: 已经被交换出来但仍然在交换缓存中的内存大小(单位:kB),如果需要,可以很快地被换回内存中。 Active: 最近使用过的内存大小(单位:kB)。 Inactive: 最近未使用的内存大小(单位:kB)。 Active(anon): 最近使用的匿名内存大小(单位:kB),不包括文件页。 Inactive(anon): 最近未使用的匿名内存大小(单位:kB),不包括文件页。 Active(file): 最近使用的文件页内存大小(单位:kB)。 Inactiv
http://www.jsqmd.com/news/637423/

相关文章:

  • 全网最全:计算机视觉需要哪些数学基础?如何高效学习线性代数和概率论?
  • Hewlett Packard 44701A 数字电压表
  • OmenSuperHub:让你的游戏本性能飙升,告别臃肿官方软件
  • PDS 2020.3 联合 ModelSim 仿真避坑指南:从编译库到解决 GRS_INST 报错的全流程
  • 大模型应用开发实例学习笔记 - 大模型集成、RAG、Tool Calling、MCP协议、智能体.etc
  • J-Link烧录的原因
  • 后 Zoom 时代:视频会议平台的多元竞争与选择
  • DLSS Swapper终极指南:三步轻松提升游戏画质与性能
  • 5分钟快速掌握Docker日志管理:从入门到精通实战指南
  • AI Agent高薪岗位盘点:哪些方向最赚钱
  • Vulnserver终极指南:快速掌握Windows缓冲区溢出漏洞利用技巧
  • 西电计科/软工智能软件大作业实战复盘:从选题到展示的全流程指南
  • 51单片机PWM调光不精准?可能是你的定时器初值没算对(附误差分析与修正代码)
  • STM32G4霍尔有感运行实战:从零配置到电流环闭环调试(附完整代码)
  • 【SPIE出版、EI检索稳定】2026年智慧油气与可持续发展国际学术会议(SOGSD 2026)
  • Translumo:免费实时屏幕翻译工具终极指南
  • mPDF实战指南:5个核心场景深度解析PHP到PDF的高效转换方案
  • 微信小程序的我爱美食--健康菜谱分享网站
  • VMware解锁工具终极指南:三步突破虚拟机macOS限制
  • 常规病理组织切片操作规范与质量控制
  • 苹果智能眼镜:2027年能否开启穿戴新潮流?
  • java---servlet
  • Re:思考·重建·记录 现代C++ C++11篇 (三) 深度解构:可变参数模板、类功能演进与 STL 的新版图
  • 技术人的孤独:深夜Debug时的思考
  • 创FreePDF Pro,免费批量转Word/合并/压缩,新手图文教程
  • 46、foreach和map的区别
  • Linux操作系统基本操作
  • 全球主流AI编程模型深度对比:从GPT-4到Claude-3优劣势分析
  • MATLAB科研绘图终极指南:用export_fig一键生成期刊级高质量图像
  • Simulink控制算法库 _Matlab仿真 Simulink控制算法库 _Matlab仿真 Pid控制 滑膜控制 模糊控制 鲁棒控制 遗传算法 神经网络 模型预测控制 自抗扰控制