webkit中FastMalloc的分析

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的默认数值,应该是比较好的

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值