tcmalloc编译使用

一、编译

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

猜你喜欢

转载自blog.csdn.net/sun172270102/article/details/106147615