Netty 多线程本地实现原理

PoolThreadCache包含了不同类型的MemoryRegionCache,如smallSubPageHeapCaches和normalDirectCaches,它们分别对应heap和direct内存,且有大小区分。内存的分配与回收涉及MemoryRegionCache和PoolArena,分配时将PoolArena封装成Entry加入队列,回收则触发PoolArena的回收过程。
摘要由CSDN通过智能技术生成

PoolThreadCache

PoolThreadCache 包含多种 MemoryRegionCache,缓存的

    // 容量与 heapArena 一致
    private final MemoryRegionCache<byte[]>[] smallSubPageHeapCaches;
    // 容量与 directArena 一致
    private final MemoryRegionCache<ByteBuffer>[] smallSubPageDirectCaches;
    private final MemoryRegionCache<byte[]>[] normalHeapCaches;
    private final MemoryRegionCache<ByteBuffer>[] normalDirectCaches;

1、PoolThreadCache 回收触发 MemoryRegionCache 的回收,MemoryRegionCache 的回收实际触发 PoolArena 的回收
2、PoolThreadCache 分配触发 MemoryRegionCache 的分配,最后触发在 smallSubPageHeapCaches、smallSubPageDirectCaches、normalHeapCaches、normalDirectCaches的分配。而 smallSubPageHeapCaches、smallSubPageDirectCaches、normalHeapCaches、normalDirectCaches 的主要区别在两个地方
1)是否是直接内存还是堆内存
2)不同规则。small 就比 normal 小

MemoryRegionCache

MemoryRegionCache 是一个队列,每个元素是 Entry,Entry 封装了 PoolChunk、ByteBuffer,Handle。
1、MemoryRegionCache 的分配是将 PoolArena 封装成 Entry 加入 Queue
2、MemoryRegionCache 的回收实际触发 PoolArena 的回收

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值