9

我想使用高性能通用分配器,例如jemalloc/tcmalloc与内存池。有这样做的指南吗?我不想使用jemalloc/tcmalloc作为malloc.

我有一个内存池,它使用libarena并划分了一个较大的内存区域(2GB)。我想gslice在这个舞台上创建固定大小的对象池,比如 1 GB。(如 Bonwick 平板分配器)并希望将剩余的内存用于可变大小的通用分配。我想拥有jemalloc/tcmalloc使用这个内存区域。这可能吗?关于如何进行的任何想法?如果有备用库,我也想听听。

4

1 回答 1

6

这是一个古老的问题,但最终有一个肯定的答案,至少在哪里jemalloc是这样。从jemalloc4.0.0 版开始,您可以使用该接口mallctl为分块分配获取内存的位置设置挂钩。arena.<i>.chunk_hooks这些钩子在jemalloc 手册页中有很好的记录,包括一些交叉引用。

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

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

于 2016-03-10T19:08:47.350 回答