我想使用像jemalloc
/ tcmalloc
这样的高性能通用分配器和内存池。这样做有指导吗?我不想使用jemalloc
/ tcmalloc
作为malloc
的替代品。
我的内存池使用libarena
并且占用了大的内存区域(2GB)。我想在这个领域创建像gslice
这样的固定大小的对象池,比如1 GB。 (像Bonwick slab分配器一样)并且希望将剩余的内存用于可变大小的通用分配。我希望jemalloc
/ tcmalloc
使用此内存区域。这可能吗?关于如何进行的任何想法?如果有一个替代图书馆,我也希望听到它。
答案 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;那里也可能有有用的信息。