码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2020-06-25 19:31:34      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:方式   不能   hunk   就是   不同   默认   查找   memcache   cached   

实际上,这是一个编译时选项。默认会使用内部的 slab 分配器。您确实确实应该

使用内建的 slab 分配器。最早的时候,memcached 只使用 malloc/free 来管理

内存。然而,这种方式不能与 OS 的内存管理以前很好地工作。反复地 malloc/free

造成了内存碎片,OS 最终花费大量的时间去查找连续的内存块来满足 malloc 的

请求,而不是运行 memcached 进程。如果您不同意,当然可以使用 malloc!只

是不要在邮件列表中抱怨啊

slab 分配器就是为了解决这个问题而生的。内存被分配并划分成 chunks,一直被

重复使用。因为内存被划分成大小不等的 slabs,如果 item 的大小与被选择存放

它的 slab 不是很合适的话,就会浪费一些内存。Steven Grimm 正在这方面已经

做出了有效的改进。

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

标签:方式   不能   hunk   就是   不同   默认   查找   memcache   cached   

原文地址:https://www.cnblogs.com/programb/p/13020036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!