我正在将 glibc(2.21版)用于页面大小为2MB和64MB的系统。但是,由于页面大小很大,因此会有更多的碎片。因此,我使用mallopt()将 M_MMAP_THRESHOLD 增大到32MB,但仍然有碎片。因此,我想将 M_MMAP_THRESHOLD 增加到1 GB。这对bin索引计算有什么影响吗?
答案 0 :(得分:1)
这个问题是answered on the libc-help list:
如果增加M_MMAP_THRESHOLD
,还必须将堆大小增加到32 GiB(malloc / arena.c中的HEAP_MAX_SIZE
)。 2 * DEFAULT_MMAP_THRESHOLD_MAX
的默认值可能太小(假设DEFAULT_MMAP_THRESHOLD_MAX
为2 GiB)。否则,对于2 GiB和HEAP_MAX_SIZE
之间的分配请求,您将有很大的碎片。