Tcmalloc定位内存泄漏问题

gperftools工具介绍

gperftools是Google推出的一个非常强大的性能分析工具集。
gperftools工具的主要功能包括:

  • CPU性能分析
    能够通过统计一定时间内各个功能单元(线程、函数等)的执行时间并给出其占用比例。
  • 内存性能分析
    统计单位时间内各单元对内存的占用数量。
  • 内存泄漏检查
    查找程序中是否有内存泄露。

注:本文只介绍gperftools工具在定位内存泄漏问题上的使用。

gperftools工具安装

执行如下操作:

git clone https://github.com/gperftools/gperftools.git
tar -zxvf gperftools-2.15.tar.gz
cd gperftools-2.15/
./configure
make -j8
sudo make install
注:
(1)如果网速较慢,可直接去下载压缩包。
如我下载的地址:https://github.com/gperftools/gperftools/releases/tag/gperftools-2.15
(2)如果上述过程没有报错,则说明gperftools安装成功。

查看pprof安装路径

lx@lx-virtual-machine:~/tcmalloc/gperftools-2.15$ ls /usr/local/bin/pprof*
/usr/local/bin/pprof  /usr/local/bin/pprof-symbolize

查看tcmalloc库安装路径

lx@lx-virtual-machine:~/tcmalloc/gperftools-2.15$ ls /usr/local/lib/libtcmalloc*
/usr/local/lib/libtcmalloc.a                       /usr/local/lib/libtcmalloc_minimal_debug.a
/usr/local/lib/libtcmalloc_and_profiler.a          /usr/local/lib/libtcmalloc_minimal_debug.la
/usr/local/lib/libtcmalloc_and_profiler.la         /usr/local/lib/libtcmalloc_minimal_debug.so
/usr/local/lib/libtcmalloc_and_profiler.so         /usr/local/lib/libtcmalloc_minimal_debug.so.4
/usr/local/lib/libtcmalloc_and_profiler.so.4       /usr/local/lib/libtcmalloc_minimal_debug.so.4.5.16
/usr/local/lib/libtcmalloc_and_profiler.so.4.6.11  /usr/local/lib/libtcmalloc_minimal.la
/usr/local/lib/libtcmalloc_debug.a                 /usr/local/lib/libtcmalloc_minimal.so
/usr/local/lib/libtcmalloc_debug.la                /usr/local/lib/libtcmalloc_minimal.so.4
/usr/local/lib/libtcmalloc_debug.so                /usr/local/lib/libtcmalloc_minimal.so.4.5.16
/usr/local/lib/libtcmalloc_debug.so.4              /usr/local/lib/libtcmalloc.so
/usr/local/lib/libtcmalloc_debug.so.4.5.16         /usr/local/lib/libtcmalloc.so.4
/usr/local/lib/libtcmalloc.la                      /usr/local/lib/libtcmalloc.so.4.5.16
/usr/local/lib/libtcmalloc_minimal.a

刷新动态库

sudo ldconfig

测试pprof命令
在这里插入图片描述

注:如果出现上述命令选项即正确安装成功。

上述可知,gperftools工具安装完成后,会产生包括TCMalloc、heap-checker、heap-profiler和cpu-profiler共4个组件文件。其中,会在/usr/local/lib/目录下会生成libtcmalloc*、libprofiler*库,同时在/usr/local/bin/目录下生成pprof文件,这二者都是定位和分析内存泄漏问题所需要的。

Tcmalloc和pprof使用

测试示例一(非侵入式)

测试程序如下

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 void func_malloc(char* ch)
 5 {
   
   
 6         ch = (char *)malloc(sizeof(char));
 7         return ;
 8 }
 9 
 10 int main()
 11 {
   
   
 12         printf("hello world!\n");
 13 
 14         char* ch = NULL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值