jemalloc源码结构分析(三):arena_malloc_small内存分布

时间:2023-12-20 11:16:32

在arena_s结构中,由NBINS数组将bin按照不同规模等级分别存储,每一个等级对应一颗run树,即一颗以chunk_map_t为节点的红黑树,而这些chunk_map_t节点实际分布于各个chunk的chunk_map_t数组中(每个chunk缺省为4M大小),由于chunk其实地址是chunksize对齐的,所以可以由当前chunk_map_t节点地址求得chunk的开始地址(CHUNK_ADDR2BASE),同时,每个chunk_map_t对应该chunk中的一个page,顺序也保持一致,因此可以由map具体定位到那个page,每个page的开头存储的是arena_run_s结构。