使用了thread cache,小塊的內存分配都可以從cache中分配。多線程分配內存的情況下,可以減少鎖競爭。
tcmalloc官方文檔見:
https://gperftools.github.io/gperftools/tcmalloc.html
tcmalloc可以替換大多數系統、不同編譯器環境下的內存分配函數(malloc/free/new/delete),針對不同的編譯器和操作系統,替換的方式有所不同。
對於GCC編譯的glibc的替換,則採用GNU C中提供的__attribute__(alias)
別名機制,定義和glibc中實際調用的函數同名的函數,並將其聲明爲tcmalloc對應函數的別名。gcc glibc中內存分配的函數爲弱符號(week symbol
),在鏈接時便順利被tcmalloc替代。
其他環境下的替換方式,可參見libc_override_*.h