时隔近四年(见“jemalloc 一切») 分配器 5.3.1 版本已发布 杰马洛克 – malloc(3) 的实现,强调防止碎片化和支持可扩展的并发。
新版本包含超过 390 次提交,修复了错误,添加了新功能,优化了性能,并改进了可移植性。
该项目使用 C 语言编写,并以 BSD 许可证发布。
新功能:
- 支持 pvalloc(3)。
- 调试版本中检测到重复释放;
- 添加了 --enable-pageid 编译选项以启用内存映射注解。
- 添加了运行时参数 prof_bt_max,用于控制性能分析的最大堆栈深度;
- 添加了编译选项 --enable-force-getenv,以使用 getenv 而不是 secure_getenv;
- 添加了 --disable-dss 编译选项,以禁用 sbrk(2) 的使用;
- 添加了编译选项 tcache_ncached_max,用于控制线程缓存中的项目数。
- 添加运行时参数 calloc_madvise_threshold,以确定在调用 calloc 时是使用内核还是 memset 将已分配的内存块清零;
- 添加了 --disable-user-config 编译时选项,用于在运行时禁用从 /etc/malloc.conf 文件或 MALLOC_CONF 环境变量读取配置。
- 添加了运行时参数 disable_large_size_classes,以启用新的可用大小计算算法,该算法可最大限度地减少分配大内存块(即大小 >= 4 * PAGE)时的内存开销;
- 启用了 process_madvise 的使用,并添加了运行时参数 process_madvise_max_batch 来控制每个 madvise“批次”中的最大内存区域数;
- mallctl 接口已添加:
- opt.prof_bt_max;
- 竞技场。.name
- thread.tcache.max 用于更改和获取当前线程的 tcache_max;
- thread.tcache.ncached_max.write 和 thread.tcache.ncached_max.read_sizeclass 用于更改和获取当前线程的 ncached_max;
- arenas.hugepage 返回已使用的 hugepage 大小,也导出到 malloc 统计信息;
- 使用 approximate_stats.active 获取当前活动字节数的近似值,该值不应与其他检索到的统计信息进行比较。
- 许多漏洞也得到了修复,文档也得到了改进。
来源: linux.org.ru
