tcmalloc浅析

  1. 云栖社区>
  2. 博客>
  3. 正文

tcmalloc浅析

七伤 2016-02-19 15:11:56 浏览14856
展开阅读全文

最近因debug需要,阅读了一下慕名已久的tcmalloc,略记一些自己的理解。
一图胜千言:
_2014_05_21_10_17_40

总体结构

在tcmalloc内存管理的体系之中,一共有三个层次:ThreadCache、CentralCache、PageHeap,如上图所示。
分配内存和释放内存的时候都是按从前到后的顺序,在各个层次中去进行尝试。基本思想是:前面的层次分配内存失败,则从下一层分配一批补充上来;前面的层次释放了过多的内存,则回收一批到下一层次。
这几个层次从前到后,主要有这么几方面的变化:

  1. 线程私有性:ThreadCache,顾名思义,是每个线程一份的。理想情况下,每个线程的内存需求都在自己的ThreadCache里面完成,线程之间不需要竞争,非常高效。而CentralCache和PageHeap则是全局的;
  2. 内存分配粒度:在tcmalloc里面,有两种粒度的

网友评论

登录后评论
0/500
评论
七伤
+ 关注