TcMalloc 라 이브 러 리 사용

4514 단어 malloc
    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;。

좋은 웹페이지 즐겨찾기