当前位置:首页 » 操作系统 » linux内存泄露检测工具

linux内存泄露检测工具

发布时间: 2023-07-20 12:52:04

‘壹’ linux Kernel模块内存泄露分析

假如通过“Free”查看内存几乎耗尽,但通过 top/ps 命令却看不出来用户态应用凳凯程序占用太多的内存空间, 那么内核模块可能发生了内存泄露

SLAB 是Linux内核中按照对象大小进行分配的内存分配器。

通过SLAB的信息好让来查看内核模块占用的内存空间:

方法1. 查看meminfo文件

方法2. 查看slabinfo文件

一般查看slabinfo文件就足以,如果发现slabinfo中占用内存过大,那基本可以断定,内核模块出现了内存泄露了
还有个命令 slabinfo 也是可以看,其实也是去读 /proc/slabinfo 后可视化出来

Linux内核的Kmemleak实现内存泄露检测

看看下面这个函数是哪里导致的内存泄漏呢?

一眼可能不容易看出上面的有什么问题,有kmalloc,有kfree 成对出现的。

问题正好出在 pr_debug 这个函数中的参数传递, 熟悉函数调用传参的人应该会知道编译器一般对参数的处理采用堆栈的方式,是一个先进后出的过程,这样参数的执行一般是逆序的(由于编译器实现的不同,这个过程不枣袜唤是确定的),这样kfree会在kmalloc之前运行,导致每次运行都会泄漏一点内存。

Resolving Memory Leaks In Linux Kernel

Slab Allocator

Proc Info

Using Crash Debugger

‘贰’ linux内存泄漏怎么查

可以使用对应的软件测试工具来查,如parasoft的c/c++等

‘叁’ Linux系统中怎么使用valgrind检查内存

valgrind主要用于检测程序内存使用异常,例如使用未初始化内存,重复释放内存,堆栈非法访问,申请空间未释放等。
使用示例(检测内存泄露): valgrind --leak-check=full --show-reachable=yes --show-leak-kinds=all 程序名
更多使用方法可以参见help信息

热点内容
androidgif控件 发布:2025-03-15 22:10:51 浏览:336
我的世界手机版非常好玩的服务器推荐 发布:2025-03-15 22:04:48 浏览:177
怎样解压手机文件 发布:2025-03-15 22:04:47 浏览:524
我的世界手机基岩版怎么做服务器 发布:2025-03-15 22:04:11 浏览:99
邮件发送压缩文件 发布:2025-03-15 22:04:06 浏览:818
数据库中的数据特征 发布:2025-03-15 21:56:20 浏览:28
账号密码可以用什么替换 发布:2025-03-15 21:55:43 浏览:698
主板自带什么配置好 发布:2025-03-15 21:49:57 浏览:698
交换空间linux 发布:2025-03-15 21:49:57 浏览:84
剪映怎么添加安卓手机里面的录音 发布:2025-03-15 21:45:01 浏览:696