前言
本文档包含了google开源内存管理模块tcmalloc的使用以及源码的剖析,有一些知识点可能理解得有问题,甚至是有可能有错误的地方,所以仅供参考。本文档借鉴了本文下方链接博客的知识点,在此表示感谢,没有你们的付出,就没有我的理解。
1.下载
google-perftools:http://code.google.com/p/google-perftools/gperftools-2.1.tar.gz
libunwind:http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz
2.libunwind安装
64位操作系统请先安装 libunwind库,32位操作系统不要安装。libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,其中包括用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API以及支持C++异常处理机制的API。
#tar zxvf libunwind-1.1.tar.gz
#cdlibunwind-1.1
#./configure
#make
#make install
3.安装google-perftools:
#tar zxvf tar zxvf gperftools-2.1.tar.gz
#cd gperftools-2.1
#./configure
#make
#make install
4.TCMalloc库加载到Linux系统中:
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
/sbin/ldconfig
5.使用
要使用TCMalloc,只要将tcmalloc通过“-ltcmalloc”链接器标志接入你的应用即可。你也可以通过使用LD_PRELOAD在不是你自己编译的应用中使用tcmalloc:
$ LD_PRELOAD="/usr/lib/libtcmalloc.so"
6.堆栈检查和分析
首先,设置pperf的环境变量:export PPROF_PATH=/usr/local/bin/pprof
测试代码:
编译:
内存泄漏检查:
结果:
检测出了测试代码中有3个字节没有释放,与结果相符
参考文章链接:
1.tcmalloc源码: gperftools-2.0
2. http://blog.chinaunix.net/xmlrpc.php?r=blog/index&uid=26339466
3. http://blog.csdn.net/chen19870707/article/details/40116379