为何MC能长期维持高性能读写
内存管理 slab 机制
讲完淘汰策略,我们接下来学习内存管理 slab 机制。
Mc 内存分配采用 slab 机制,slab 机制可以规避内存碎片,是 Mc 能持续高性能进行数据读写的关键。
slabclass
Mc 的 slab 机制是通过 slabclass 来进行运作的,如下图所示。Mc 在启动时,会构建长度为 64 的 slabclass 数组,其中 0 号 slabclass 用于 slab 的重新分配,1~63 号 slabclass 存储数据 Item。存储数据的每个 slabclass,都会记录本 slabclass 的 chunk size,同时不同 slabclass 的 chunk size 会按递增因子增加,最后一个 slabclass(即 63 号 slabclass)的 chunk size 会直接设为最大的 chunk size,默认是 0.5MB。每个 slabclass 在没有空闲的 chunk 时,Mc 就会为其分配一个默认大小为 1MB 的 slab,同时按照本 slabclass 的 chunk size 进行拆分,这些分拆出来的 chunk 会按 Item 结构体进行初始化,然后记录到 slabclass 的 freelist 链表中。当有 key/value 要存储在本 slabclass 时,就从 freelist 分配一个 Item,供其使用。同时,如果 Item 过期了,或被 flush_all 失效了,或在内存不够时被强项剔除了,也会在适当时刻,重新被回收到 freelist,以供后续分配使用。
-
专注于体验的免费在线工具 - 独特工具箱
独特工具箱(域名 dute.org),是一个提供免费在线工具的网站,遵循「实用为主、体验优先」的设计原则,所推出的每一款在线工具,均保证良... 979 0 24-11-13 -
PS烟花素材
992 0 25-04-14 -
去哪儿网消息中间件演进
864 0 24-05-28 -
手势解锁小程序
手势解锁功能是移动设备中常见的安全机制,用户通过在预设的九宫格上滑动手指绘制特定的图案来解锁应用或设备。在微信小程序中实现这一功能... 1200 0 24-11-04 -
JavaScript核心参考手册
JavaScript是世界上最流行的脚本语言,因为你在电脑、手机、平板上浏览的所有的网页,以及无数基于HTML5的手机App,交互逻辑都是由JavaScri... 1094 0 24-05-24 -
个人发卡网全开源解密版 集成了码支付和轻云支付接口+安装教程
这款发卡网源码已经集成了码支付和轻云支付接口,并且有4个前台样式模板,当然如果你都不满意,可以自己写样式,毕竟这款发卡平台源码无加... 384 0 21-07-02 -
微信小程序文件上传客户的+java服务器端源码
图片上传接口wx.uploadFile(OBJECT)将本地资源上传到开发者服务器。如页面通过 wx.chooseImage 等接口获取到一个本地资源的临时文件路径... 1184 0 24-10-31 -
微赞论坛小程序
【微信小程序-微赞论坛小程序源码】是一个针对微信平台开发的社区论坛类小程序,它提供了用户交流互动的平台,集成了常见的论坛功能,如发... 825 0 24-09-12
发表我的评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~