Hakozuna:从 12 代内存分配器演进看性能与 RSS 的博弈
追求极致的内存分配性能,本质上就是在做一场关于“所有权”与“回收路径”的权衡游戏。HZ11 的思路:速度至上。 为了缩短热路径(hot path),作者设计了一种“无主回收(Ownerless recycling)”机制。它不再强求
HZ12 的进化:解耦所有权与安全保障。 HZ11 虽然快,但有个致命伤:当对象散落在各个线程缓存里时,很难判断一个 span 是否已经完全空了,导致内存回收(decommit)变得极其困难。HZ12 并没有在
下一篇
Skillscript →
我最近在研究一个非常有意思的开源项目 Hakozuna,它的作者是个硬核的理想主义者,竟然为了研究内存管理,从 HZ3 一路迭代到了 HZ12。这不仅仅是一个分配器的演进,更像是一场关于 malloc/free 吞吐量与 RSS(驻留集大小)之间极限拉扯的实验报告。
这个项目的核心演进逻辑非常值得开发者复盘:
free 操作必须将对象归还给原始拥有者线程,而是通过 front cache -> transfer cache -> central spans 这样的分层结构来处理。在 Linux x86-64 的特定 Benchmark 下,它的吞吐量甚至能达到 tcmalloc 的 6 倍左右,这种 DX(开发体验)上的性能提升确实令人兴奋。free 的热路径上堆砌原子计数器,而是把“所有权标签”降级为一个“提示(Hint)”,真正的回收决策被移到了冷路径(Cold path)上,通过校验快照、收件箱状态和回收预算来决定。这种设计哲学非常像我们在写高性能 AI Agent 工作流时的思路:在核心执行路径上尽可能保持轻量,把复杂的逻辑判断交给异步或低频触发的后台任务。
如果你对底层内存管理或高性能系统编程感兴趣,可以直接看作者在 Zenodo 上的研究论文和代码实现:
Paper (Zenodo): https://doi.org/10.5281/zenodo.21360690
GitHub: https://github.com/hakorune/hakozuna对于通用场景,作者建议使用 HZ8 版本;而 HZ10-HZ12 则更像是面向研究者的实验性分支,专门用来挑战内存管理的边界。