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 修复、测试覆盖率提升以及选项清理。
HN 评论区
72- vocx2tx
为了让大家了解这次发布为何值得关注,可以参考这篇 Jemalloc 事后复盘文章 [0]
- lordnacho
我一直很好奇,这名字是法语吗?'Je m'alloc du memory'(我给自己分配内存)?
- ksec
好吧。为什么官网和它的 Github 仓库连 Jason Evans 的名字都没提一次?我知道他已经卸任了,但完全不提似乎也不太合适吧?
Meta 还在使用和开发它吗?如果不是,现在的推动力是谁?我刚查了一下,2022 年后似乎就没有发布过新版本,直到现在突然有了。是有什么变化吗?
只希望能有一点背景说明。不过很高兴看到它仍在被维护。这对 Ruby on Rails 应用来说意义重大。
- albertgoeswoof
我在一个 Sidekiq 队列上切换到了 jemalloc,内存占用从 8GiB 降到了 1GiB 以下。
我的代码里确实存在某个缓慢的内存泄漏,但用了 jemalloc 后,这个问题实际上就不再重要了。
感谢 jemalloc 团队!
- throw0101a
相关讨论,三天前有一篇“Malloc() 算法对比”: