rpmalloc解析

rpmalloc作为一个跨平台的无锁带线程缓存的内存管理模块,采用16字节对齐的方式。其拥有较高的性能,与其他一些内存管理模块的性能对比见下图,

Memory分块介绍

        Memory blocks通过不同大小分成3类,

  1. small blocks : [16, 1024] bytes
  2. medium blocks: (1024, 31232] bytes
  3. large blocks: (31232, 2097120] bytes

类似于dlmalloc的Smallbins机制,上述三种不同大小的的blocks被细分成不同大小的size_class,

在small block中以16bytes为单元建立一个size_lcass,即这一区间有1024 / 16 = 64 再加上16byte本身为 65个SMALL_CLASS_COUNT。

在medium block中以512 bytes为单元建立一个size_lcass,即这一区间有31232 / 512 = 61 个MEDIUM_CLASS_COUNT。

在large block中以span_size(default = 64KB)为单元建立一个size_class。

如果默认的span_size改变了,small block中的size_class不变,但是medium block的大小改为(1024, span_size]bytes。

当线程缓存溢出并被释放到全局缓存时,或者当线程结束时,跨页可以在线程之间流动。与tcmalloc不同的是,单个块不能在线程之间流动,只有整个跨页(spans of pages)才能流动。

不同 size-classes 的内存配置需求会由不同 memory pages 來提供,且每种 span 只会对应到
一种size class 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值