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

嵌入式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/meminfomeminfo_start.txt# 等一段时间,把/proc/meminfo的内容写到meminfo_end.txt里cat/proc/meminfomeminfo_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

相关文章:

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

文章目录 引言: 一、快速确认 二、定位泄露源(内核态/用户态) 2.1 检查内核内存 2.2 检查用户态进程 三、使用工具排查泄露点 四、修复与验证 引言: 设备自己跑着跑着突然挂死了,还是靠看门狗给救回来了。这种时候,一定要考虑是不是内存泄露导致内存耗尽了。 那我们来看…...

rk3399平台rtl8723DS Wi-Fi模块SDIO接口驱动移植与双模配置实战

1. 认识rk3399与rtl8723DS这对黄金搭档 第一次拿到rk3399开发板和rtl8723DS模块时,我就像拿到新玩具的孩子一样兴奋。rk3399这颗六核处理器在嵌入式领域堪称性能怪兽,而rtl8723DS作为Wi-Fi蓝牙二合一模块,2.4GHz频段支持加上双模共存特性&…...

ubuntu命令行中文化脚本,个人用于解决“WSL中安装并使用cc-switch图形化界面乱码”问题

脚本内容:#!/bin/bashecho " WSL Ubuntu 中文环境配置脚本 "# 1. 安装中文 locale echo "[1/4] 安装中文语言包..." sudo apt update sudo apt install -y language-pack-zh-hans# 2. 生成并配置 locale echo "[2/4] 配置系统 locale...&q…...

保姆级教程:STM32+ESP8266接入机智云,从零完成数据点上报与APP控制

STM32与ESP8266接入机智云实战:从数据点定义到APP控制全解析 在智能硬件开发领域,快速实现设备联网与远程控制是许多嵌入式工程师面临的挑战。本文将手把手带您完成一个基于STM32和ESP8266的智能温湿度监测系统,从机智云平台配置到代码移植&a…...

GetQzonehistory:终极QQ空间历史说说备份指南,3步永久保存青春回忆

GetQzonehistory:终极QQ空间历史说说备份指南,3步永久保存青春回忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 想要永久保存QQ空间里那些珍贵的青春记忆吗&a…...

计算机网络 之 【HTTP协议】(hppt请求与响应细节、http版本与连接管理)

目录 1.http请求 1.1. http请求方法 1.2.http请求报头 2.http响应 2.1.http响应状态码及其描述 2.2.重定向 3.http版本简介 4.http连接管理 4.1.HTTP 连接管理基础 4.2.连接类型与演进 4.2.1.短连接(HTTP/1.0 默认) 4.2.2.长连接&#xff08…...

贵州辣椒酱:一份榜单,供参考

贵州辣椒酱:一份榜单,供参考贵州是全国最大的辣椒生产基地之一。辣椒酱在当地人的日常饮食中,算是比较基础的调味品。近几年,贵州辣椒酱的市场认知度逐渐提高,品牌也多了起来。2026年,贵州省辣椒产业协会发…...

从二极管整流到晶体管可变电阻:拆解一个学生设计的AGC电路反馈环工作原理

从二极管整流到晶体管可变电阻:拆解一个学生设计的AGC电路反馈环工作原理 在模拟电路设计的浩瀚海洋中,自动增益控制(AGC)电路犹如一位隐形的调音师,默默维持着电子信号的稳定输出。对于电子爱好者和高年级本科生而言&…...

第5章,[标签 Win32] :GDI 函数调用

专栏导航 上一篇:第5章,[标签 Win32] :GDI 的结构与原理 回到目录 下一篇:无 本节前言 对于本节所讲解的知识,有可能,你会需要时不时地参考本专栏的其它文章。真的遇到了需要参考之前的文章的知识点&a…...

技术人的孤独:深夜Debug时的思考

——软件测试从业者的精神图鉴一、凌晨三点的独幕剧场屏幕冷光刺破黑暗,键盘敲击声在空旷办公室回荡。当世界沉入睡眠,测试工程师却深陷与Bug的无声博弈:物理空间的隔绝:无人协作的深夜,缺失即时反馈的对话机制&#x…...

mPDF实战指南:5个核心场景深度解析PHP到PDF的高效转换方案

mPDF实战指南:5个核心场景深度解析PHP到PDF的高效转换方案 【免费下载链接】mpdf PHP library generating PDF files from UTF-8 encoded HTML 项目地址: https://gitcode.com/gh_mirrors/mp/mpdf mPDF作为一款强大的PHP PDF生成库,专注于将UTF-8…...

AI Agent高薪岗位盘点:哪些方向最赚钱

第一,也是最重要的,别光看书、别光听课,你得动手干出一个东西来。 如果实在不知道咋整,可以直接抄知学堂新出的 「AILLM应用开发」 ,里面很多实战项目case,自己跟着教程做写到简历里,糊弄hr够用…...

OmenSuperHub:让你的游戏本性能飙升,告别臃肿官方软件

OmenSuperHub:让你的游戏本性能飙升,告别臃肿官方软件 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为官方Omen Gaming Hub的…...

AI Agent开发者如何准备秋招:时间线与重点

简单说就是你拿到offer后能不能快速上手干活儿做项目,至于学历背景,本科以上基本满足大部分公司的绝大部分职业方向门槛了。下面我直接把我当时走通的路线讲明白,你照这个节奏去做,基本不会偏。 刚开始我也是无从下手,…...

从零玩转ESP32-S3-EYE人脸检测:手把手教你基于ESP-WHO的human_face_detect示例创建自己的项目

从零构建ESP32-S3-EYE人脸检测项目:基于ESP-WHO的实战指南 当ESP32-S3-EYE开发板首次握在手中时,那颗集成了240MHz双核处理器、8MB PSRAM和OV2640摄像头的芯片,仿佛在无声地邀请开发者进入嵌入式视觉的世界。对于已经熟悉ESP-IDF开发环境的工…...

别再自己造轮子了!用这个Vue3+Java开源WMS,30分钟搞定仓库管理系统部署

30分钟极速部署:基于Vue3Java开源WMS的实战指南 当业务部门突然提出仓库管理需求时,技术团队常面临两难选择:自研周期长、成本高,而商业系统又存在预算和定制化难题。今天介绍的这套开源WMS解决方案,正是为解决这种困境…...

深入TC3xx时钟分配单元(CCU):手把手教你为CAN、GPT等外设配置精准时钟(附MCCAN 80MHz实例)

TC3xx时钟分配单元深度实战:从外设需求反推CCU配置的工程方法论 当你在TC3xx平台上调试CAN通信时,是否遇到过这样的困境:明明按照手册配置了波特率参数,但实际通信速率总是存在偏差?这往往源于时钟配置的细微误差。作为…...

Android HAL升级避坑指南:从HIDL切换到Stable AIDL时,如何正确配置FCM和SEPolicy?

Android HAL升级实战:从HIDL迁移到Stable AIDL的完整避坑手册 当Android HAL架构从HIDL向Stable AIDL演进时,系统集成工程师常会在编译部署阶段遭遇各种"隐形陷阱"。本文将从实际项目经验出发,深度解析兼容性矩阵配置、SEPolicy权限…...

某讯滑块验证码VMP架构探秘-从字节码到指令集

1. 某讯滑块验证码VMP架构初探 第一次看到某讯滑块验证码的VMP架构时,我就像发现了一个黑盒子。这个黑盒子会吃掉JavaScript代码,吐出一堆难以理解的字节码。最有趣的是,这个黑盒子还会变形——它的指令集居然会动态变化!这让我想…...

Re:思考·重建·记录 现代C++ C++11篇 (三) 深度解构:可变参数模板、类功能演进与 STL 的新版图

◆ 博主名称: 晓此方-CSDN博客 大家好,欢迎来到晓此方的博客。 ⭐️现代C系列个人专栏: 插曲:现代C ⭐️Re系列专栏:我们思考 (Rethink) 我们重建 (Rebuild) 我们记录 (Record) 文章目录概要&序論一&#xff0c…...

STM32G4霍尔有感运行实战:从零配置到电流环闭环调试(附完整代码)

STM32G4霍尔传感器电机控制实战:从电流环配置到闭环调试全解析 霍尔传感器在无刷直流电机(BLDC)控制中扮演着关键角色,它通过检测转子位置为控制系统提供关键的反馈信息。STM32G4系列微控制器凭借其高性能定时器和丰富的外设资源&…...

PDS 2020.3 联合 ModelSim 仿真避坑指南:从编译库到解决 GRS_INST 报错的全流程

PDS 2020.3 联合 ModelSim 仿真实战避坑手册:从环境配置到疑难解析 在数字电路设计流程中,仿真验证环节往往决定着项目成败。当PangoDesign Suite 2020.3(简称PDS)遇上ModelSim这对黄金组合时,理论上应该实现无缝衔接的…...

深入WebRTC客户端架构:手把手解析基于libwebrtc.a与ZLMediaKit的C++推拉流核心模块设计

WebRTC客户端架构深度解析:从模块设计到实战优化 在实时音视频通信领域,WebRTC已经成为事实上的标准技术栈。不同于简单的API调用,一个工业级可用的WebRTC客户端需要精心设计的架构来应对复杂的网络环境和多样化的业务需求。本文将带您深入We…...

大营销平台 —— 抽奖前置规则过滤

一、前言上一期我们实现了权重配置的装配,这一期我们将实现抽奖业务的前置规则过滤,这里主要涉及了两个规则,第一个是黑名单(要求这些用户100积分只能抽到1积分),第二个是权重抽奖(在幸运值达到…...

Android 13手势导航卡顿?深入剖析Launcher3最近任务(Recents)的动画性能优化点

Android 13手势导航卡顿?深入剖析Launcher3最近任务(Recents)的动画性能优化点 在Android 13中,手势导航已经成为主流交互方式,但不少开发者反馈在Launcher3的最近任务(Recents)界面会出现动画卡…...

FRCRN语音增强工具实操手册:批量处理WAV文件的Shell脚本示例

FRCRN语音增强工具实操手册:批量处理WAV文件的Shell脚本示例 你是不是也遇到过这样的烦恼?手头有一堆录音文件,背景里混杂着键盘声、空调声、甚至窗外的车流声,想提取清晰的人声简直是一场耳朵的折磨。或者,你正在处理…...

海南大学交友平台开发实战 day10(后端向前端输出_前端读取数据全流程联调+日志调试落地)

海南大学交友平台开发实战 day10(后端向前端输出/前端读取数据全流程联调日志调试落地) 大家好,欢迎来到海南大学交友平台开发实战系列的第十天!在前九天的开发中,我们已完成登录注册、UI 布局、Flask 后端基础搭建、S…...

KosxPDF批量PDF盖章工具|支持骑缝章+电子章+多文件合并,高效智能文档签章解决方案

温馨提示:文末有联系方式功能亮点:全能PDF批量签章管理 KosxPDF电子文档批量骑缝章管理工具,专为高效处理PDF签章需求设计。 它不仅支持单文件或多文件批量加盖普通电子章,更可智能生成跨页连续骑缝章,确保文档完整性与…...

如何利用国内LLM对Obsidian的笔记进行分析

Win11 下用 Obsidian OpenCode 智谱 GLM 的安装与配置教程适用场景:不能方便走代理,但希望把 Obsidian 接到大模型,用于笔记整理、润色、总结与后续工具扩展。 本教程基于我们已经跑通的方案:Obsidian Agent Client OpenCode A…...

STL迭代器:核心概念与实战指南

迭代器基础概念迭代器是STL的核心组件之一,提供了一种统一的方式来访问容器中的元素。迭代器类似于指针,可以指向容器中的某个元素,并支持解引用、递增等操作。迭代器分为五种类型:输入迭代器、输出迭代器、前向迭代器、双向迭代器…...