使用了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