编辑: kr9梯 | 2016-06-22 |
34 5.2 分箱式内存管理 对于空闲的 chunk,ptmalloc 采用分箱式内存管理方式,根据空闲 chunk 的大小和处于 的状态将其放在四个不同的 bin 中,这四个空闲 chunk 的容器包括 fast bins,unsorted bin, small bins 和large bins.Fast bins 是小内存块的高速缓存,当一些大小小于
64 字节的 chunk 被回收时,首先会放入 fast bins 中,在分配小内存时,首先会查看 fast bins 中是否有合适的 内存块,如果存在,则直接返回 fast bins 中的内存块,以加快分配速度.Usorted bin 只有一 个,回收的 chunk 块必须先放到 unsorted bin 中,分配内存时会查看 unsorted bin 中是否有 合适的 chunk,如果找到满足条件的 chunk,则直接返回给用户,否则将 unsorted bin 的所 有chunk 放入 small bins 或是 large bins 中.Small bins 用于存放固定大小的 chunk,共64 个bin,最小的 chunk 大小为
16 字节或
32 字节,每个 bin 的大小相差
8 字节或是
16 字节,当 分配小内存块时,采用精确匹配的方式从 small bins 中查找合适的 chunk.Large bins 用于存 储大于等于 512B 或1024B 的空闲 chunk, 这些 chunk 使用双向链表的形式按大小顺序........