eumnq8 发表于 2021-1-12 20:23:02

tcmalloc能解决什么问题?什么场景适合用tcmalloc

malloc创建和free内存不够快,基于glibc 2.3的malloc,依赖于ptmalloc2,在2.8GHz Process4的机器上,创建小对象(大小小于等于32K),大致需要300ns,而对于tcmalloc来说,只需要大约50ns。所以速度快。
多线程中,tcmalloc可以减小锁竞争,对于小对象来说,几乎零竞争,而对于大对象来说,tcmalloc会尝试使用细粒度和高效的自旋锁;而malloc,ptmalloc2在创建每个线程时候,会为每个线程分配空间,有一个问题就是,线程之前的内存是不会重复利用的;
效率,tcmalloc对于小对象的空间的利用率更高,比如当需要使用空间为8N*1.01bytes的内存空间,那么tcmalloc只需要创建8N bytes的对象,也就是说有百分之1的空间开销。而ptmalloc2则需要使用16N bytes。

TCMalloc工作原理是什么?
​TCMalloc为每个线程分配一个线程本地缓存。线程本地缓存满足了较小的分配。根据需要将对象从中心数据结构移动到线程本地缓存中,并使用定期的垃圾收集将内存从线程本地缓存迁移回中心数据结构中。

当所分配的内存比较小的时候,推荐使用tcmalloc,而ptmalloc2则适用性更强。
页: [1]
查看完整版本: tcmalloc能解决什么问题?什么场景适合用tcmalloc