1.slab内存结构图:二维数组链表
slab是一次申请内存的最小单位
![](https://img-my.csdn.net/uploads/201301/05/1357367773_2661.png)
2.slab内存分配实例
![](https://img-my.csdn.net/uploads/201301/05/1357367914_9359.png)
3.实例数据
![](https://img-my.csdn.net/uploads/201301/05/1357368746_2433.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1f402fe34d266c18ec1c73f0df67a743.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1f402fe34d266c18ec1c73f0df67a743.png)
4.计算slab占用内存
![](https://img-my.csdn.net/uploads/201301/05/1357368767_1763.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1f402fe34d266c18ec1c73f0df67a743.png)
5.slab参数
进程内存区slabclass元信息:1.1中是21byte,1.2中是200byte
Hashtable:1.1中位41MB,1.2中位65MB
数据内存区
slab默认大小为1048576byte( 1MB), 大于1MB数据忽略
chunk初始大小,1.1中是1byte,1.2中是48byte
增长因子factor
1.1中,chunk大小为初始大小*2^n,n为classid,即:
id为0的slab大小1byte,id为1的slab大小2byte,id为2的slab大小4byte...
id为20的slab,每chunk大小为1MB,只有一个chunk
1.2中有一个factor值,默认为1.25
96,120,152...