PoolChunk的上层还抽象出一个管理类,PoolChunkList,它负责多个chunk的生命周期,以及一些内存分配的优化,直接看源码吧。
private static final Iterator<PoolChunkMetric> EMPTY_METRICS = Collections.<PoolChunkMetric>emptyList().iterator();
private final PoolArena<T> arena;
private final PoolChunkList<T> nextList;
private final int minUsage;// 状态的最小内存使用率
private final int maxUsage;// 状态的最大内存使用率
private final int maxCapacity;// 该状态下的一个Chunk可分配的最大字节数
private PoolChunk<T> head; // head节点
// This is only update once when create the linked like list of PoolChunkList in PoolArena constructor.
private PoolChunkList<T> prevList;
arena,我们看过好多次了,它是在更上层的管理类;nextList,prevList让我们看到了PoolChunkList竟然也组成了双向链。构造函数:
PoolChunkList(PoolArena<T> arena, PoolChunkList<T> nextList, int minUsage, int maxUsage, int c