Jemalloc 5.4.0:160 次提交重构内存分配

Jemalloc 5.4.0 版本发布,包含超过 160 次提交,重点在于清理技术债务、修复 Bug 以及提升测试覆盖率。新版本引入了 EXTENT_ALLOC_FLAG_PINNED 功能,允许自定义扩展分配钩子标记不可回收的 HugeTLB 页面,并新增了一系列 mallctl 接口以监控 pinned 内存使用情况。此外,该版本还优化了 per-CPU arena 选择机制,改进了人类可读与 JSON 格式的 malloc 统计对齐,并将实验性的运行时选项替换为编译时选项以提升性能。在兼容性方面,tcache 的填充策略改为基于 GC 事件间的需求动态调整,移除了七个遗留的非实验性控制选项。同时,修复了 errno 保存、数值溢出检查、TSD 生命周期边缘情况等多个关键 Bug,并引入了 OS 抽象层以增强跨平台可移植性。

本次发布包含超过 160 次提交,专注于清理技术债务,包括重构、Bug 修复、测试覆盖率提升以及选项清理。
  1. vocx2tx

    为了让大家了解这次发布为何值得关注,可以参考这篇 Jemalloc 事后复盘文章 [0]

    [0] https://news.ycombinator.com/item?id=44264958

  2. lordnacho

    我一直很好奇,这名字是法语吗?'Je m'alloc du memory'(我给自己分配内存)?

  3. ksec

    好吧。为什么官网和它的 Github 仓库连 Jason Evans 的名字都没提一次?我知道他已经卸任了,但完全不提似乎也不太合适吧?

    Meta 还在使用和开发它吗?如果不是,现在的推动力是谁?我刚查了一下,2022 年后似乎就没有发布过新版本,直到现在突然有了。是有什么变化吗?

    只希望能有一点背景说明。不过很高兴看到它仍在被维护。这对 Ruby on Rails 应用来说意义重大。

  4. albertgoeswoof

    我在一个 Sidekiq 队列上切换到了 jemalloc,内存占用从 8GiB 降到了 1GiB 以下。

    我的代码里确实存在某个缓慢的内存泄漏,但用了 jemalloc 后,这个问题实际上就不再重要了。

    感谢 jemalloc 团队!

  5. throw0101a

    相关讨论,三天前有一篇“Malloc() 算法对比”:

    * https://news.ycombinator.com/item?id=49715318

同日更多故事

2026-09-18