Gperftdolsのtcmallocの紹介と使用
4356 ワード
TcMalloc(Thread-CachingMalloc) google-perftools , glibc malloc ,TcMalloc , , 。
Google-perftools :http://code.google.com/p/google-perftools/, TcMalloc、heap-checker、heap-profiler cpu-profiler 4 。 TcMalloc 。
: , , 。
http://goog-perftools.sourceforge.net/doc/tcmalloc.html。
概要TcMalloc Google , glibc malloc 。 ptmalloc2 300ns malloc free , TcMalloc 50ns malloc free 。
TcMalloc , 。
TcMalloc Cache, Cache , , Cache 。
TcMalloc (<=)32K , (4K) , 。
TcMalloc , , 。
インストールLinux tcmalloc :
1) Google , 2.0;
2)
# unzip gperftools-2.0.zip
# tar zxvf gperftools-2.0.tar.gz
3)
# cd gperftools-2.0
# ./ configure --disable-cpu-profiler --disable-heap-profiler--disable-heap-checker
--disable-debugalloc--enable-minimal
tcmalloc_minimal , , :
# ./configure
# ./configure -h 。
:
# make&& make install
tcmalloc_minimal :
# cplib/tcmalloc_minimal.so.0.0.0 /usr/local/lib
tcmalloc:
# ls –s /usr/local/lib/libtcmalloc_minimal.so.0.0.0/usr/local/lib/libtcmalloc.so
, tcmalloc :
# exportLD_PRELOAD=”/usr/local/lib/libtcmalloc.so
losf tcmalloc :
# lsof -n | greptcmalloc
Linux tcmalloc , Windows VS(2003 ) gperftools.sln 。
使用 libtcmalloc.so/libtcmalloc.a , LD_PRELOAD=libtcmalloc.so。 tcmalloc malloc、free、realloc、strdup 。 :
TCMALLOC_DEBUG=<level> , 1-2
MALLOCSTATS=<level> , 1-2
HEAPPROFILE=<pre>
HEAPCHECK=<type> ,type=normal/strict/draconian
TcMalloc , :
1) tcmalloc , tcmalloc ;
2) LD_PRELOAD=”libtcmalloc.so”/HEAPCHECK=normal,
, :
1) , : HEAPCHECK=normal /bin/ls
2) , , :
HeapProfileLeakCheckerchecker("foo"); //
Foo(); //
assert(checker.NoLeaks()); //
checker , checker.NoLeaks , , ,NoLeaks false, pprof 。
:
#LD_PRELOAD=libtcmalloc.so HEAPCHECK=strict HEAPPROFILE=memtm ./a.out
, ,pprof , , 。
:
#pprof --base=profile.0001.heap profile.0002.heap
, :
void *mark =HeapLeakChecker::GetDisableChecksStart();
<leaky code> //
HeapLeakChecker::DisableChecksToHereFrom(mark);
: libc 。
: , :char *str = new char[100]; delete str;。