Linux基础——Glibc默认ptmalloc可分配主内存区和非主内存区计算方法

ptmalloc可分配主内存区和非主内存区的Arena的实现
参考:https://blog.csdn.net/initphp/article/details/127750294
arena内存块
160核*8+1=1281(块)
80核*8+1=641(块)
48核*8+1=385(块)
32核*8+1=177(块)
分配区个数:多少个分配区,根据系统来决定,一个进程最多能分配的arena个数在64位下是8 * core + 1,32位下是2 * core + 1个;arena 对于32位系统,数量最多为核心数量2倍,64位则最多为核心数量8倍,可以用来保证多线程的堆空间分配的高效性。

当arena满了之后就不再创建而是与其他arena共享一个arena,方法为依次给各个arena上锁(查看是否有其他线程正在使用该arena),如果上锁成功(没有其他线程正在使用),则使用该arena,之后一直使用这个arena,如果无法使用则阻塞等待。

posted on 2024-04-24 22:07  gkhost  阅读(7)  评论(0编辑  收藏  举报

导航