FastMalloc是google写的,主要是为了内存管理.
首先每个线程都有自己的TCMalloc_TheadCache结构,用来管理每个线程的heap,由PageHeapAllocation<TCMalloc_TheadCache>分配,
其次有个TCMalloc_Central_Freelist数组,这个是所有线程共享的用来获取进程heap的空内存,管理的Span结构
然后所有内存管理在TCMalloc_PageHeap,通过PageHeapAllocation<Span>分配Span结构,并且为其添加相应的heap.
为了不频繁地调用分配和释放函数,
每次都会为Span分配一块很大的内存,然后切分成小块,
交给TCMalloc_Central_Freelist,最后再由TCMalloc_TheadCache取走其中的一部分。
其中每个TCMalloc_Central_Freelist中的object都有一个固定的大小,
因此所有的内存大小都会映射到其中一个TCMalloc_Central_Freelist,
然后从中取走一定数量的object到TCMalloc_TheadCache中,
再由TCMalloc_TheadCache返回给申请者。
但是当申请的太大时,会直接由TCMalloc_PageHeap分配,然后返回给申请者
其中的数值都可以修改,但是要注意数值间的联系,尤其是TCMalloc_Central_Freelist数组的个数
google的默认数值,应该是比较好的