TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多。TCMalloc是google-perftools工具中的一个,这个工具都是开源的,以源码形式发布。如果觉得自己维护一个内存分配器麻烦的话,可以考虑将TCMalloc静态库连接到你的程序中。使用的时候和glibc中的malloc调用方式一样一样的。你需要做的只是把TCMalloc的动态库或者静态库连接进你的程序中,你就可以获得一个高效,快速,安全的内存分配器。好了废话不多说,如果想知道更多关于TCMalloc的信息,看这里。下面是在Linux下编译TCMalloc的方法,以及使用方法:
- [x] (1).可以先到http://code.google.com/p/google-perftools/下载源码包,在Linux下可以输入命令:wget http://google-perftools.googlecode.com/files/google-perftools-1.4.tar.gz 进行下载。
- [x] (2).下载完成后,输入命令:tar zxvf google-perftools-1.4.tar.gz 进行解压;并输入命令:cd google-perftools-1.4进入源码目录中。
- [x] (3).输入命令:./configure 可安装全部google-perftools的组件,包括TCMalloc、heap-checker、heap-profiler和cpu-profiler共4个组件。但是我们这里只需要TCMalloc所以我们可以输入命令:./configure --prefix=/usr/local --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --disable-debugalloc --enable-minimal 只安装TCMalloc。--prefix=/usr/local是指定安装目录的,如果不指定则默认安装到/usr/local/lib/下面。
- [x] (4).输入命令:make && make install进行编译、安装。如果要使用最小安装,则只需在第(3)部中指定一个临时目录安装,然后将生成的.so和.a库文件复制到/usr/local/lib目录下,然后执行如下几条建立符号链接的命令即可:(静态库不需要符号链接,复制的时候只复制文件,不复制符号链接文件)
ln -s /usr/local/lib/libtcmalloc_minimal.so.0.0.0 /usr/local/lib/libtcmalloc.so
ln -s /usr/local/lib/libtcmalloc_minimal.so.0.0.0 /usr/local/lib/libtcmalloc.so.0
ln -s /usr/local/lib/libtcmalloc_minimal.so.0.0.0 /usr/local/lib/libtcmalloc.so.0.0.0
- [x] (5).在编译自己程序的时候,在编译选项的最后加入 /usr/local/lib/libtcmalloc_minimal.a 即可链接静态库。如果用动态库则在编译选项这里插入 -L/usr/local/lib -ltcmalloc_minimal 即可。
最后编译你的程序,你就可以使用TCMalloc了,你的代码一句都不需要修改。动态库有没有使用成功可使用这个命令:lsof -n | grep tcmalloc。静态库则没有办法查看。
完美之道,不在于无可增加,而在于无可减少。