2026-09-08
[linux内存管理] 第 059 篇 /proc/slabinfo 详解
本文详细介绍了Linux内核SLUB内存分配器中`/proc/slabinfo`文件的内容与实现原理。文章首先说明SLUB是默认的内核对象分配器,并解释了通用缓存(如`kmalloc-*`)与专用缓存(如`dentry`)的管理框架。核心内容围绕如何利用`/proc/slabinfo`排查slab内存泄漏问题,包括结合`/proc/meminfo`、识别异常`kmem_cache`、进行时间序列采样及使用调试工具等步骤。此外,文章还分析了`/proc/slabinfo`在内核代码中的注册与`seq_file`接口实现。
2025-06-19
[Android稳定性] 第050篇 [问题篇] slab内存泄露造成设备黑屏
本文描述了在测试手机经过长期智能充电后,出现卡顿和黑屏的问题现象。复现步骤包括设置手机时间和电池温度,并使用QC3.0充电器进行充电。预期结果是系统界面流畅,但实际结果是系统界面卡死和黑屏。通过分析内存信息和slab信息,发现内存不足和slab内存泄露问题。通过slabtrace分析,确定问题根源在于charger模块中的一些函数调用导致了内存泄露。解决方案是在申请内存前,先判断是否已经申请过,以避免重复申请。
2024-12-30
[Android稳定性] 第014篇 [问题篇] slab内存泄露
由于`pd_dbg_info`函数申请内存后,延迟释放导致的内存泄漏。通过调整`dbg_log_limit`、优化工作队列和进行内存泄漏检测,可以有效解决该问题。