文章目录
在前两篇文章: (四) netty内存池:技术概要和
(五) netty内存池:分配器PooledByteBufAllocator和内存池字节缓冲的表示做了netty内存池方面的不少铺垫,这篇打算来把核心的分配算法都讲完,本文的结构是,先讲内存分配涉及到的各个数据结构,再分别讲各个内存粒度的分配算法,主要是huge粒度的直接分配方式,normal粒度的buddy分配算法,small和tiny粒度的slab分配算法。但是从缓冲分配会简单略过,下一篇文章专门细讲从缓冲分配。
1. PoolArena
PoolArena涉及到内存分配算法执行的主要属性如下:
private final PoolSubpage<T>[] tinySubpagePools;
private final PoolSubpage<T>[] smallSubpagePools;
private final PoolChunkList<T> q050;
private final PoolChunkList<T> q025;
private final PoolChunkList<T> q000;
private final PoolChunkList<T> qInit;
private final PoolChunkList<T> q075;
private final PoolChunkList<T> q100;
实例化之后