Ubuntu 内存泄漏的定位与修复
一、快速确认是否泄漏
二、定位泄漏的工具与方法
#include <mcheck.h>
int main() { mtrace(); /* ... */ return 0; }
运行前导出日志:export MALLOC_TRACE=./trace.log三、修复与预防的实用做法
四、临时缓解与系统层面优化
五、常见场景与工具选择
| 场景 | 首选工具 | 关键命令/要点 |
|---|---|---|
| C/C++ 开发期 | ASan / Valgrind | ASan:编译加**-fsanitize=address -g**;Valgrind:–leak-check=full |
| glibc malloc 跟踪 | mtrace | 代码调用mtrace(),设置MALLOC_TRACE,用mtrace分析 |
| 生产环境快速排查 | top/htop + pmap | 观察 RES/VIRT 趋势与 anon 段增长,定位可疑进程与模块 |
| 第三方服务/脚本 | 系统监控 + 日志 | 先确认是否泄漏,再联系维护方或用对应语言/框架工具链 |
| 选择匹配场景的工具,能显著提升定位效率。 |