C++领域最重要的三个内存分配器是: mimalloc、 tcmalloc、jemalloc。 回如何评价 mimalloc? mimalloc没有发明新的内存管理理论,只是把 已有的Segregated Lists、Thread Local Heaps、Lock-free algorithms组合到了非常 非常高的程度。 在性能、内存占用上都很强。是 Windows 目 前实力最强的内存分配器。 mimalloc 最重要的创新点是Free List Sharding。 为了解决内存分配出现的缓存抖动和锁竞争。 mimalloc 换了种方式:把内存划分为page (不是操作系统的页,是mimalloc 的管理单 元)。然后每个 page 属于一个特定的线程局 部 heap。然后有一个 Sharding 机制,每个 page 有三个空闲链表:

(1)free:当前线程分配时用的链表。 (2)local_free:当前线程释放时用的链表(释 放不直接回 free) (3)thread_free:其他线程释放属于该 page 的内存时,用原子操作挂在这个链表上。 mimalloc 的源码工程化高到什么程度:非常多 的分支预测提示、所有的热点路径都在头文件 内联、用弱 CAS 循环。 还有很多优点:False Sharing、低碎片化、大 页支持、跨平台支持(但在Windows是最优秀 的) 等等!! 最后:Windows下直接用mimalloc,Linux下 用jemalloc。

【瓜分奖池】C++领域最重要的内存分配器 mimalloc。 第5张插图
【瓜分奖池】C++领域最重要的内存分配器 mimalloc。 第6张插图
【瓜分奖池】C++领域最重要的内存分配器 mimalloc。 第7张插图