memcached 内存管理

本文详细解读了一种内存管理方式的核心原理,包括slabclass_t数组的使用、size的分配策略以及内存回收机制。通过图表展示,直观地展现了内存管理的过程和关键点。

 

slabclass是slabclass_t数组,索引有size决定。

 

slabclass数组中slabclass_t的size按照1.25倍依次增大,当然这个是可配的,具体这个该搞成多少,我也没有做结合业务做过实验。

 

slabclass_t中的size就是当前slab中每个块的大小,乘以perslab一共有多少块的话就得到了每个page的大小 size* preslab,每次新分配按照page增加。

 

内存不够新分配一个page大小,接到slab_list后边。

 

slots中存放着回收的item,新分配内存需求,优先从这里获取返回。items是放在headers的那个双向链表中的——按照时间的LRU队列。

 

粗略的过了一遍1.2.2版本的内存管理方式,后续如果有必要细化的话再补充。

 

整理了一个图,基本就清楚了

item-slabs

 

转载于:https://www.cnblogs.com/stevinwang/articles/4088535.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值