TCMalloc(Thread-Caching Malloc)與標准glibc庫的malloc實現一樣的功能,但是TCMalloc在效率和速度效率都比標准malloc高很多。TCMalloc是google-perftools工具中的一個,這個工具都是開源的,以源碼形式發布。如果覺得自己維護一個內存分配器麻煩的話,可以考慮將TCMalloc靜態庫連接到你的程序中。使用的時候和glibc中的malloc調用方式一樣一樣的。你需要做的只是把TCMalloc的動態庫或者靜態庫連接進你的程序中,你就可以獲得一個高效,快速,安全的內存分配器。好了廢話不多說,如果想知道更多關於TCMalloc的信息,看這里。下面是在Linux下編譯TCMalloc的方法,以及使用方法:
(1).可以先到http://code.google.com/p/google-perftools/下載源碼包,在Linux下可以輸入命令:wget http://google-perftools.googlecode.com/files/google-perftools-1.4.tar.gz 進行下載。
(2).下載完成后,輸入命令:tar zxvf google-perftools-1.4.tar.gz 進行解壓;並輸入命令:cd google-perftools-1.4進入源碼目錄中。
(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/下面。
(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
(5).在編譯自己程序的時候,在編譯選項的最后加入 /usr/local/lib/libtcmalloc_minimal.a 即可鏈接靜態庫。如果用動態庫則在編譯選項這里插入 -L/usr/local/lib -ltcmalloc_minimal 即可。最后編譯你的程序,你就可以使用TCMalloc了,你的代碼一句都不需要修改。動態庫有沒有使用成功可使用這個命令:lsof -n | grep tcmalloc。靜態庫則沒有辦法查看。