是否可以使用 jemalloc 设置一个仅从保留的 2^32 字节虚拟内存区域分配页面的竞技场
void* arena_start =
mmap(nullptr, 1ull<<32,
PROT_NONE,
MAP_PRIVATE | MAP_ANONYMOUS,
-1, 0);
mallocx
因此,使用 arena 的选项从 arena 分配的任何指针MALLOCX_ARENA
都可以表示为 32 位索引arena_start
。
这样做的动机是为了更节省空间的数据结构的指针压缩。(有关类似用例的背景信息,请参阅论文Tranparent Pointer Compression for Linked DataStructures 。)
来自这个线程关于 arenas 的评论让我认为这种类型的定制可能会得到支持。