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来决定。
本文详细介绍了Linux中mallopt()函数的用途,用于调整内存分配参数,如malloc/new的行为。讨论了包括M_ARENA_MAX、M_MMAP_THRESHOLD等在内的多个参数,这些参数影响内存分配策略,如竞技场数量、内存检测行为和mmap使用。通过设置这些参数,可以优化内存使用和提高性能。
订阅专栏 解锁全文
1041

被折叠的 条评论
为什么被折叠?



