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

时间:2013-06-05 06:36:00

标签: c memory allocator tcmalloc

我想使用像jemalloc / tcmalloc这样的高性能通用分配器和内存池。这样做有指导吗?我不想使用jemalloc / tcmalloc作为malloc的替代品。

我的内存池使用libarena并且占用了大的内存区域(2GB)。我想在这个领域创建像gslice这样的固定大小的对象池,比如1 GB。 (像Bonwick slab分配器一样)并且希望将剩余的内存用于可变大小的通用分配。我希望jemalloc / tcmalloc使用此内存区域。这可能吗?关于如何进行的任何想法?如果有一个替代图书馆,我也希望听到它。

1 个答案:

答案 0 :(得分:2)

这是一个老问题,但最后还是一个肯定的答案,至少在jemalloc的问题上。从mallctl版本4.0.0开始,您可以使用arena.<i>.chunk_hooks通过使用tcmalloc接口为分块分配获取内存的位置设置挂钩。这些钩子在jemalloc manpage中有详细记录,包括许多交叉引用。

我不知道<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.0.0.RELEASE</version> 中的任何类似界面;我不使用它。

我最近回答了一个similar question;那里也可能有有用的信息。