1、说明
mallopt()函数用来设置内存分配参数,比如设置malloc/new的底层是否调用mmap函数、是否使能内存紧凑分配等。
mallopt()属于标准C库 (libc);
编译时链接:-lc;
头文件为:#include <malloc.h>
原型:int mallopt(int param, int value);
内存分配图
2、参数详解
2.1 M_ARENA_MAX
Arena直译为:竞技场;当一个线程申请的堆时,会包含很多的信息,比如二进制位信息,多个malloc_chunk信息等,这些堆需要一个东东来管理,Arena就是管理线程中的这些堆的东东。
Arena默认数量与核心处理器数量有关:
32位系统中:Arena默认数量 = 2 * 内核数
64位系统中:Arena默认数量 = 8 * 内核数
当M_ARENA_MAX的值设置为0时,为默认值;
如果没有设置M_ARENA_MAX,则忽略该值,Arena的数量将有M_ARENA_TEST来决定。