使用tcmalloc/jemalloc和自定义内存池管理器

Joh*_*ght 8 c memory allocator tcmalloc

我想用一个高性能通用分配器喜欢jemalloc/ tcmalloc有一个内存池.这样做有指导吗?我不想使用jemalloc/ tcmalloc作为替代品malloc.

我有内存池使用libarena和雕刻一个较大的内存区域(2GB).我想gslice在这个竞技场上创建固定大小的对象池,例如1 GB.(像Bonwick slab分配器一样)并且希望将剩余的内存用于可变大小的通用分配.我想拥有jemalloc/ tcmalloc使用这个记忆区域.这可能吗?关于如何进行的任何想法?如果有一个备用库,我也想听听它.

dho*_*dho 6

这是一个古老的问题,但最终有一个肯定的答案,至少在相关方面jemalloc是这样。从jemalloc4.0.0 版开始,您可以使用mallctlarena.<i>.chunk_hooks接口为分块分配获取内存的位置设置挂钩。这些钩子在jemalloc 联机帮助页中有详细记录,包括许多交叉引用。

我不知道任何类似的界面tcmalloc;我不用这个。

我最近回答了一个类似的问题;那里也可能有有用的信息。