一、编译
https://github.com/gperftools/gperftools/releases
如上链接页面下载需要版本的代码;
cd /home/code/;
tar -zxvf gperftools-2.7.90.tar.gz;
cd gperftools-2.7.90;
../configure --prefix=/usr/local/lib --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --disable-debugalloc --enable-minimal
make && make install
可根据需求打开关闭指定的模块。 google-perftools的组件,包括TCMalloc、heap-checker、heap-profiler和cpu-profiler共4个组件。
编译完成生成lib库在–prefix指定的路径,文件名:libtcmalloc_minimall.so
二、使用
1)静态链接
在编译选项的最后加入 /usr/local/lib/libtcmalloc_minimal.a 即可链接静态库
2)动态链接
在编译选项这里插入 -L/usr/local/lib -ltcmalloc_minimal 即可;
3)、重启进程即可使用
启动进程前执行 export LD_PRELOAD=/usr/local/lib/libtcmalloc_minimal.so即可;
三、其他用途
1)内存泄漏检测
xxxxxx
四、排障
1、2.5以上版本链接tcmalloc使用,进行较大内存(测试30g)申请释放后,内存仍维持高位,造成疑似内存泄漏情况;
原因:高版本tcmalloc会持有一部分内存不还给操作系统,此部分内存在系统内存较高时可被其他进程申请到;另外tcmalloc提供接口MallocExtension_ReleaseToSystem(gperftools-2.7\src\gperftools\malloc_extension_c.h)释放持有的内存给操作系统;
PERFTOOLS_DLL_DECL void MallocExtension_ReleaseToSystem(size_t num_bytes);
参考资料:
tcmalloc简介:https://zhuanlan.zhihu.com/p/29216091