一、简介
mimalloc 是微软研究院在 2019 年发表并开源的一个新的内存分配库:
代码量少,核心代码行数 <3500 行
tcmalloc ~20k LOC
jemalloc ~25k LOC
性能大大优于市面上其他 memory allocator
比 tcmalloc 快 7%
比 jemalloc 快 14%
三个局部存储的分片的空闲列表
增加数据访问局部性 (locality)
减少线程访问竞争
支持性能优化到极致的分配和释放的 fast path
引入一个时间节奏(temporal cadence),使分配器适时离开 fast path 来处理一些维护性的任务
二、内存分配和释放机制
mimalloc 的内存分配释放机制要点:
极致的空闲列表分片
分配和释放的主路径经过深度优化,其他的情况都被延迟到 generic 方法中进行。
没有使用锁,所有的多线程数据竞争都使用原子操作来解决。最坏情况下有上界,元数据约占 0.2%,实际分配空间浪费不超过 16.7%。