Memcached源码分析-slab内存分配(5)
1 工作原理图
2 流程说明
1 工作原理
1 memcached启动的时候会初始化一个slabclass_t slabclass[MAX_NUMBER_OF_SLAB_CLASSES]数组,MAX_NUMBER_OF_SLAB_CLASSES的值是200。
2 每个slabclass结构体重,会有size属性指定这个结构体能够存储item的大小,开始的时候是80B,然后以1.25的增加。
3 slabclass每次会申请1M的内存,然后按照size的大小进行分割。分割后的数据存入到void **slab_list。slab二位指针数据。slabclass可以看做是一个item的二位数据。[list_size][perslab],slabs一维list_size的个数,perslab是二维每个slab中存放的item个数
4 每次分配新的item时候,都会加入到指向空闲item链表。void *slots就会执行空闲的链表。