jemalloc 5.4.0 发布:160 多个提交专注清理技术债
来源: github.com — 2026-09-17
概述
jemalloc 5.4.0 包含 160 多个提交,主题是还技术债:重构、修 bug、提升测试覆盖、清理配置项,并按上游反馈改进可移植性。新特性包括用 EXTENT_ALLOC_FLAG_PINNED 让自定义 extent 分配钩子标记不可回收映射(如 HugeTLB 页)以获得优先复用,以及一整套 pinned 内存统计接口。另有一处不兼容变更:tcache 的填充与保留目标改为按 GC 周期之间观察到的需求自适应。
核心要点
- 新增 EXTENT_ALLOC_FLAG_PINNED,让自定义 extent 分配钩子把 HugeTLB 这类不可回收映射标出,优先复用而不进入 decay 与 purge 流程。
- 配套新增 stats.pinned、stats.arenas..pinned 以及 npinned、pinned_bytes 等统计项,并包含相关互斥量统计。
- 不兼容变更:tcache 策略改为按需求自适应,固定策略时代的七个旧控制项被移除,对应的 malloc_conf 设置会被静默忽略。
- 修掉 free、free_sized、free_aligned_sized 未保留 errno 的问题,以及 SAN 下 prof 采样与守卫页的交互 bug。
- 前端被模块化:arena 管理、初始化、fork 编排与分配派发从 jemalloc.c 中拆出,并消除了内部头文件的循环依赖。
金句
本次发布包含 160 多个提交,重点是清理技术债,包括重构、修 bug、提升测试覆盖与清理配置项。
👍 0
👎 0
返回 Lobsters 首页