首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

Jemalloc 5.4.0

2026-09-18 1 阅读 约9分钟阅读 gkfasdfasdf
分享:
字号:
jemalloc / jemalloc 公共通知 您必须登录才能更改通知设置 Fork 1.6k Star 11.1k 5.4.0 最新 最新 比较 选择要比较的标签 抱歉,出了点问题。过滤器加载 抱歉,出了点问题。呃哦!加载时出错。请重新加载此页面。未找到结果 查看所有标签 guangli-dai 于 9 月 17 日 18:31 发布 · 自本版本发布以来,有 5 项提交到开发 5.4.0 7a34f18 此版本包含超过 160 项提交,重点关注技术债务清理,包括重构、错误修复、测试覆盖率改进和选项清理。该版本还包括根据上游问题报告的可移植性改进。新功能:添加 EXTENT_ALLOC_FLAG_PINNED,以便自定义范围分配挂钩可以标记不可回收的映射(例如 HugeTLB 页),以便在衰减和清除管道之外优先重用。添加 mallctl 接口 stats.pinned 、 stats.arenas..pinned 、 stats.arena..extents..npinned 、 stats.arena..extents..pinned_bytes 和 stats.arena..mutexes.extents_pinned.{counter} 以报告固定内存使用情况和互斥统计信息。 (@binliu19:be2de8c)允许通过 thread.arena 恢复每个 CPU arena 选择。 ( @Algunenano : 68c35f6 ) 更好地对齐人类可读的内容和 JSON malloc 统计信息。 (@spredolac:68fe1be,30b1a41,04aad97)将运行时experimental_infallible_new选项替换为编译时--enable-cxx-infallible-new选项,启用编译器级优化和移动构造函数中的优化,并修复new(std :: nothrow)合同(@spredolac:160ab9d,fe33667)不兼容的更改:根据 GC 事件之间观察到的需求调整每个 bin 的 tcache 填充和保留目标,替换固定的重新填充/刷新策略。删除七个旧的非实验控件: lg_tcache_nslots_mul 、 tcache_nslots_small_min 、 tcache_nslots_small_max 、 tcache_nslots_large 、 tcache_gc_delay_bytes 、 lg_tcache_flush_small_div 和 lg_tcache_flush_large_div 。相应的 malloc_conf 设置将被静默忽略,匹配的 opt.* mallctls 返回 ENOENT,并且 tcache_ncached_max 仍然受支持。 (@spredolac:d13fe91)错误修复:跨 free 、 free_sized 和 free_aligned_sized 以及跨基于 process_madvise 的页面清除保留 errno 。 ( @spredolac : 3a77966 , 86f0582 ) 修复尺寸类别中的数字溢出检查。 ( @spredolac : 6b24522 ) 在 free_sized() 和 free_aligned_sized() 中接受 NULL(C23 正确性)。 (@bigbruno:7ce8b91)通过以下方式修复 TSD 生命周期边缘情况:1)在启用缓存之前初始化线程缓存箱,防止可重入引导分配使用未初始化的状态,2)避免在通用 TSD 平台上线程拆卸后重新分配 TSD。 (@fzakaria:54f22c8,@spredolac:fb5499a)在 init_thp_state 中打开 THP sysfs 文件时使用 O_CLOEXEC。 ( @ibookstein : d070554 ) 修复 malloc_stats_print 输出中重复的 opt.stats_print 和 opt.stats_print_opts 字段。 (@spredolac:dfe3a2e)修复 arena_reset 期间潜在的死锁。 ( @guangli-dai : 6957341 ) 修复 SAN 中的教授采样/防护页面交互错误。 ( @gctony : e36a0fa ) 优化和重构:通过从 jemalloc.c 中提取 arena 管理、初始化、fork 编排和分配调度来模块化 jemalloc 的前端;解开 tcache/arena 所有权;并合并内部头图以消除循环依赖。 ( @spredolac : ba1e2fe , 8874597 , 9d75722 , de9ad14 , ...) 通过重构 arena 助手、内部化仅实现的控件、用类型化助手替换控制流宏以及按子系统组织 ctl.c 来简化 ctl 调度。 ( @spredolac : 9e14346 , 901365d , 4e903a0 , 5bc8d6e ) 限制基块增长启发式以避免在罕见的活跃条件下虚拟内存耗尽。 ( @guangli-dai : 2f4db8c ) 将后台线程生命周期和状态操作移至后台线程模块中,澄清独立于 PAC/HPA 调用者的所有权。 ( @guangli-dai : f1f0792 ) 通过用直接 PAC/HPA 调用替换 PAI vtable 调度、删除过时的 pai_t / pai.h 抽象以及将延迟工作和衰减编排移出舞台,简化页面分配边界。 (@guangli-dai:1dfa6f7、8edd101、d410f43)将统计数据收集和渲染重构为单独的收集/发射阶段和描述符驱动表。 ( @spredolac : 184f304 , 80c8fcb ) 引入操作系统抽象层,并将平台相关的文件/进程 I/O、时间、同步、CPU、虚拟内存、atfork、错误处理、分析、线程产量和配置访问操作移出分配器核心代码。 (@guangli-dai:c4158ac,c8e2e01,...)可移植性改进:用标准 C++ 替换 std::__ throw_bad_alloc 调用(#2900)。 ( @lexprfuncall : 1a15fe3 ) 对于 C99 或更高版本,使 arena_s 使用灵活的数组成员 ( bin_t all_bins[] )。 ( @grueninger : 300b58b ) 使用 --with-lg- 修复 rdtscp 检测
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱