目录
TCmalloc简介
TCMalloc 是 Google 自定义的 c 的 malloc () 和 c + + 操作符 new 的实现,用于 c 和 c + + 代码中的内存分配。TCMalloc 将 c 的 malloc () 和 c + + 操作符 new 的内部实现替换为 TCMalloc 的实现,开发者只需编译链接 TCMalloc 的静态库或动态库即可,无需改动任何与内存分配有关的代码。
TCMalloc 通常被用于提高内存分配的性能,实现了高效的内存管理。在与glibc中的内存分配器ptmalloc2作比较:
- tcmalloc分配一次内存的时间更快
- tcmalloc优化了对小对象的存储,需要更少的空间
- tcmalloc特别在多线程方面做了优化,一方面是对于小对象(<32k)的分配基本不存在锁,内存资源竞争,另一方面是对大对象(>=32k)使用了细粒度、高效的自旋锁。
- tcmalloc分配给本地线程的内存资源,在长时间空闲的情况下会被回收,供其他线程使用,提高了多线程时内存利用率,不会浪费内存,这一点ptmalloc2无法做到。
粒度解释:“粒度”表示的是精确程度问题。粗粒度角度描述一个系统,是关注系统中大的组件;细粒度角度描述一个系统是从组成大组件的小组件,或者更小组件的角度认识系统。
“粒度”此处是用来描述一个系统,或者对比多个系统的术语,它是一个相对的概念。
说明:glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的