空堆区域的开销

2023-12-26

我的工具是 Linux、gcc 和 pthreads。当我的程序从多个线程调用 new/delete 时,并且存在堆争用时,会创建“arena”(请参阅​​以下链接以供参考)http://www.bozemanpass.com/info/linux/malloc/Linux_Heap_Contention.html http://www.bozemanpass.com/info/linux/malloc/Linux_Heap_Contention.html)。我的程序每天 24 小时运行,两周后仍然偶尔会创建竞技场。我认为最终可能会有与线程一样多的竞技场。 ps(1) 显示了惊人的内存消耗,但我怀疑实际上只有一小部分被映射。

空荡荡的竞技场的“开销”是多少? (与所有分配都限制在传统堆中相比,每个竞技场使用了多少内存?)

有没有办法强制提前创建n个竞技场?有什么办法可以强行破坏空荡荡的竞技场吗?


struct malloc_state(又名 mstate,又名竞技场描述符)有大小

glibc-2.2 (256+18)*4 字节 =~ 1 KB(对于 32 位模式)和~2 KB(对于 64 位模式)。 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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

空堆区域的开销 的相关文章

随机推荐