我的工具是Linux,gcc和pthreads.当我的程序从多个线程调用new / delete时,并且当存在争用堆时,’arena’被创建(参见以下链接以供参考http://www.bozemanpass.com/info/linux/malloc/Linux_Heap_Contention.html).我的程序全天候运行,2周后偶尔会创建竞技场.我认为最终可能会出现与线程一样多的竞技场. ps(1)显示了惊人的内存消耗,但我怀疑它实际上只映射了一小部分.
空旷竞技场的“开销”是多少? (如果所有分配仅限于传统堆,则每个竞技场使用多少内存?)
有没有办法在n竞技场之前强制创作?有没有办法强迫破坏空的竞技场?
最佳答案
struct malloc_state(又名mstate,又名竞技场描述符)有大小
的glibc-2.2
(256 18)* 4字节= 32位模式下~~1 KB,64位模式下约2 KB.
的glibc-2.3
(256 256/32 11 NFASTBINS)* 4 = 32位~1.1-1.2 KB,64位2.4-2.5 KB
请参阅glibc-x.x.x / malloc / malloc.c文件,struct malloc_state