jemalloc 5.0.1 发布,内存分配管理

来源: 投稿
作者: 淡漠悠然

Jemalloc 5.0.1 已发布,jemalloc 是一个通用的 malloc(3)实现,它强调了分段回避和可伸缩并发支持。jemalloc 在 2005 年首次作为 FreeBSD libc 分配器使用,2010年,jemalloc 的功能延伸到如堆分析和监控/调优等。现代的 jemalloc 版本依然集成在 FreeBSD 中。


  • Update decay->nunpurged before purging, in order to avoid potential update races and subsequent incorrect purging volume.

  • Only abort on dlsym(3) error if the failure impacts an enabled feature (lazy locking and/or background threads). This mitigates an initialization failure bug for which we still do not have a clear reproduction test case.

  • Modify tsd management so that it neither crashes nor leaks if a thread's only allocation activity is to call free() after TLS destructors have been executed. This behavior was observed when operating with GNU libc, and is unlikely to be an issue with other libc implementations.

  • Mask signals during background thread creation. This prevents signals from being inadvertently delivered to background threads.

  • Avoid inactivity checks within background threads, in order to prevent recursive mutex acquisition.

  • Fix extent_grow_retained() to use the specified hooks when the arena.<i>.extent_hooks mallctl is used to override the default hooks.

  • Add missing reentrancy support for custom extent hooks which allocate. 

  • Post-fork(2), re-initialize the list of tcaches associated with each arena to contain no tcaches except the forking thread's. 

  • Add missing post-fork(2) mutex reinitialization for extent_grow_mtx. This fixes potential deadlocks after fork(2)

  • Enforce minimum autoconf version (currently 2.68), since 2.63 is known to generate corrupt configure scripts. 

  • Ensure that the configured page size (--with-lg-page) is no larger than the configured huge page size (--with-lg-hugepage). 


16 收藏
0 评论
16 收藏