![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
netty
wqy1200
这个作者很懒,什么都没留下…
展开
-
自顶向下深入分析Netty(十)--PoolThreadCache
1.PoolThreadCache 在JEMalloc分配算法文中,将PoolThreadCache类比为同城仓库,可以就近提取中小型货物。本文将详细介绍PoolThreadCache的细节和实现,在Netty中,其内部结构可见下图: PoolThreadCache 这里,新引入一个数据类型MemoryRegionCache,其内部是一个ByteBuf队列。每个节点是一个ByteB...转载 2020-03-26 22:51:14 · 203 阅读 · 0 评论 -
自顶向下深入分析Netty(十)--PoolSubpage
在PoolArena中由PoolSubpage双向链表分配内存小于PageSize(Netty默认8KB)的请求。在JEMalloc分配算法一文中介绍过,其中的结构如下图: Subpage双向链表 而Subpage又是由PoolChunk中的一个Page依照第一次分配请求的大小均等切分而成。可推知,小于PageSize的分配请求执行过程如下: 首次请求Arena分配,Arena中...转载 2020-03-26 22:49:42 · 191 阅读 · 0 评论 -
自顶向下深入分析Netty(十)--PoolChunk
如果你还对jemalloc分配算法不太了解,可以查看前情回顾:jemalloc分配算法。 1. 伙伴分配算法 JEMalloc分配算法使用伙伴分配算法分配Chunk中的Page节点。Netty实现的伙伴分配算法中,构造了两棵满二叉树,满二叉树非常适合使用数组存储,Netty使用两个字节数组memoryMap和depthMap来表示两棵二叉树,其中MemoryMap存放分配信息,depthMap...转载 2020-03-26 22:48:37 · 185 阅读 · 0 评论 -
自顶向下深入分析Netty(十)--PoolArena
上一节讲述了jemalloc的思想,本节将分析Netty的实现细节。在Netty实现中,相关的类都加上了前缀Pool,比如PoolArena、PoolChunk等,本节分析PoolArena的源码实现细节。 首先看类签名: abstract class PoolArena<T> implements PoolArenaMetric 该类是一个抽象类,这是因为By...转载 2020-03-26 22:47:03 · 240 阅读 · 0 评论 -
自顶向下深入分析Netty(十)--JEMalloc分配算法
1. JEMalloc分配算法 Netty的PooledByteBuf采用与jemalloc一致的内存分配算法。可用这样的情景类比,想像一下当前电商的配送流程。当顾客采购小件商品(比如书籍)时,直接从同城仓库送出;当顾客采购大件商品(比如电视)时,从区域仓库送出;当顾客采购超大件商品(比如汽车)时,则从全国仓库送出。Netty的分配算法与此相似,可参见下图: jemalloc内存分配示意图...转载 2020-03-26 22:45:46 · 266 阅读 · 0 评论 -
自顶向下深入分析Netty(十)--PoolChunkList
在JEMalloc分配算法文中介绍过,Chunk块随着内存使用率的变化,有六种状态:QINIT,Q0,Q25,Q50,Q75,Q100。可知,一种状态可能有多个Chunk块,Netty使用PoolChunkList来存储这些Chunk块,它们之间的关系如下图所示: Chunk与PoolChunkList 有六种状态所以有六个PoolChunkList,它们之间除了QINIT外形成双向...转载 2020-03-26 22:44:06 · 196 阅读 · 0 评论