linux/debian内存泄漏三两事--heaptrack篇幅
·
开篇
上篇介绍了tcmollc篇。
那么带来两个问题,第一个问题是为什么不使用用valgrind。
因为它更适用于在linux或是debian系统里面跑某个进程。如果是整个系统跑的是复杂的由systemd拉起来的一个个新进程。这种情况下是不太好通过某一个进程来排查内存泄漏的原因。
上面我们介绍了tcmolloc,由于楼主时间紧,暂时不介绍详细的关于工具的内存泄漏逻辑。直接介绍新方法heaptrack。
heaptrack是什么
Heaptrack的核心功能在于其对内存分配行为的追踪能力。当一个应用程序启动时,Heaptrack会拦截所有的malloc、free等内存操作函数调用,并记录下每次分配的具体位置(即堆栈跟踪信息)。这些信息包括了分配内存时所在的源代码文件名、行号以及调用栈,使得开发者能够清晰地看到每一笔内存是如何被分配出去的,又是如何被释放回来的。
更重要的是,Heaptrack还能够根据收集到的数据生成详细的报告,显示出哪些函数或代码段消耗了最多的内存资源。通过这种方式,开发者可以很容易地发现那些可能导致性能瓶颈的关键区域,并针对性地进行优化处理。
如何安装使用heaptrack
sudo apt update
sudo apt install heaptrack
sudo apt install heaptrack_gui
排查内存消耗最多的进程
1,通过系统管理上报系统,查看一定时间内存消耗最多的进程
2,手动在系统应用启动的时候,查看top,一段时间后对比下。
3,通过经验获取内存泄漏严重情况下,对应的内存消耗大的进程。
然后
heaptrack --pid xxx
会生成一个xxx.gz
通过解析
heaptrack_gui xxx.gz

具体使用过程我暂时未有问题。如有问题,可以参考。这里不赘述
https://blog.csdn.net/baidu_35692628/article/details/138979134
更多推荐





所有评论(0)