【吊打面试官系列-Memcached面试题】memcached 的内存分配器是如何工作的?为什么不适用malloc/free!?为何要使用 slabs?

大家好,我是锋哥。今天分享关于 【memcached 的内存分配器是如何工作的?为什么不适用malloc/free!?为何要使用 slabs?】面试题,希望对大家有帮助;

memcached 的内存分配器是如何工作的?为什么不适用malloc/free!?为何要使用 slabs?

实际上,这是一个编译时选项。默认会使用内部的 slab 分配器。您确实确实应该使用内建的 slab 分配器。最早的时候,memcached 只使用 malloc/free 来管理内存。然而,这种方式不能与 OS 的内存管理以前很好地工作。反复地 malloc/free 造成了内存碎片,OS 最终花费大量的时间去查找连续的内存块来满足 malloc 的 请求,而不是运行 memcached 进程。如果您不同意,当然可以使用 malloc!只 是不要在邮件列表中抱怨啊
slab 分配器就是为了解决这个问题而生的。内存被分配并划分成 chunks,一直被重复使用。因为内存被划分成大小不等的 slabs,如果 item 的大小与被选择存放它的 slab 不是很合适的话,就会浪费一些内存。Steven Grimm 正在这方面已经做出了有效的改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值