由於想接觸tcmalloc,所以索性對tcmalloc做一個徹底點的分析,以下是一些分析的心得。
一. 安裝
tcmalloc在gperftools之中,故想要使用tcmalloc,就得先安裝gperftools。在linux下,其安裝步驟如下:
1. tar xzvf gperftools-2.1.tar.gz
2. cd gperftools-2.1
3. ./configure --enable-frame-pointers
4. make
5. make install
這里需要注意一點,在linux下,如果直接./configure,那么make時會報出編譯錯誤:error Cannot calculate stack trace: will need to write for your environment。解決方法如上所示,在configure時加入選項--enable-frame-pointers。
如果想定制化安裝,請自行參閱gperftools的安裝文檔,即源碼包中的INSTALL文件。
二. 使用
對於tcmalloc的使用,還是用程序來說明吧。
tcmalloc_sample.cpp:
#include <iostream> #include <google/tcmalloc.h> int main() { char *cp = (char *)tc_malloc(23 * sizeof(char)); tc_free(cp); cp = NULL; return 0; }
注:以下的步驟都是以第一部分所述的安裝方式為前提而進行的。
1. 編譯:g++ -o tcmalloc_sample -g tcmalloc_sample.cpp -ltcmalloc
2. 運行: ./tcmalloc_sample
如果遇到以下錯誤:
error while loading shared libraries: libtcmalloc.so.4: cannot open shared object file: No such file or directory
那么就需要為系統指定libtcmalloc的加載路徑:
1. echo /usr/local/lib > /etc/ld.so.conf.d/libtcmalloc.conf
2. ldconfig
現在運行./tcmallco_sample命令,就不會出現上面提到的錯誤了。
(To Be Continued...)