内存管理的原因

Posted by keming on July 2, 2021
对内存管理的思考
  • linux自带的内存管理其实挺好用的,那么我们为什么还要做一个上层的设计呢?做了这么长一段内存管理,突然想明白了它的作用。
  • 其实无外乎三个主要目的:
    • 减少内存占用
      • 这个一般是通过列式存储自适应int位宽实现的。
      • 行式存储没怎么见过。
    • 避免系统频繁的内存分配(malloc/free)
      • 几乎所有的内存管理系统都会考虑,因为系统malloc是有开销的,可以malloc一块更大的再一点点用,管理freelist。
    • 提高cache命中率
      • 最重要的一点,影响性能最大。
      • 本质是根据业务情况,让数据按照用户取用的排布进行排布。如果每次都取一个对象的所有字段,那就按行式存储,把对象紧密排列;如果取的是各对象的某一属性,那就按属性排布在一起,就是列式存储了。
  • 对于持久化:
    • 规则的内存排布会让持久化更加容易。
    • 甚至可以在这个基础上做一些增量修改等功能。
  • 对于malloc本身
    • 像Tcmalloc / Jemalloc 都优化了系统自带的malloc,对于不同size的对象做了很好的缓存。