• MemCache中的内存管理详解


     

      MC的内存管理机制

      1.内存的碎片化

      当我们使用C语言或者其他语言进行malloc(申请内存),free(释放内存)等类似的命令操作内存的时候,

      在不断的申请和释放的过程中,形成了一些很小的内存片段,我们无法继续的利用,

      那这种空闲,无法继续利用内存的情况,我们称之为内存的碎片化

      2.MC管理内存的方法

      MC使用slab allocator的机制来管理内存

      原理:预告将内存划分成数个slab class的仓库 //默认是64

        各个仓库 切分成不同尺寸的小块(chunk

      需要存放内容的时候,先判断内容的大小,为其选取合理的仓库存放

      3.MC如何选择合适的chunk

      MC会根据收到的数据的大小,选择最合适数据大小的chunk组(slab class

      MC中保存着slab class内空闲chunk的列表,根据列表选择空的chunk,然后将数据缓存其中即可

      但是,假如有100字节的内容要存,但122大小的仓库的chunk满了,

      他并不会寻求更大的,比如说144字节的

      只会将122字节的仓库中的旧数据剔除,然后再加入进来(最近最少使用算法)

      

      4.固定大小的chunk带来的内存浪费

      由于slab allocate机制中,分配的chunk的大小是固定的,因此,对于特定的item,可能更会造成内存的浪费

      比如说,将100字节的数据缓存到122字节的chunk中,剩余的22个字节就浪费了

        对于chunk空间的浪费问题,无法彻底的解决,只能缓解该问题

      如何解决这个问题呢?

      grow factor 增长因子 通过启动增长因子,默认是1.25,可以指定。在启动memcache的时候,根据我们要存的键值对的大小,来指定-f的大小

     

    原文链接:http://www.maiziedu.com/wiki/memcache/memory/

  • 相关阅读:
    HTML5 JSDOM
    svn 基本操作
    Flex布局
    git上传布置代码 git优势
    jsonp, json区别
    require.js 模块化简单理解
    @vue/cli 3 安装搭建及 webpack 配置
    npm 常用命令 使用命令删除 node_modules 包
    package.json字段分析
    rem适配方案
  • 原文地址:https://www.cnblogs.com/space007/p/6149331.html
Copyright © 2020-2023  润新知