月归档:2015年03月

Netty5源码学习之buffer篇(一):PooledHeapByteBuf

PooledHeapByteBuf,带有池的堆内buffer,顾名思义,肯定比一般通过new出来的buffer性能好。把对象放入对象池缓存起来,一般都是因为创建该对象开销比较大,常见的有线程池(ThreadPool)、连接池(ConnectionPool)等。 PooledHeapByteBuf继承关系如下: PooledHeapByteBuf –》 PooledByteBuf –》 AbstractReferenceCountedByteBuf –》 AbstractByteBuf –》 ByteBuf。 继承关系比较简单清晰。 先介绍几个相关的类: PooledByteBufAllocator:buffer分配器,用来分配buffer(包括堆内和堆外)。 PoolArena:一块逻辑上的内存池,用来管理和组织buffer的,内部数据结构较复杂。 FastThreadLocal:较快的ThreadLocal(相对于jdk自带的),实现:线程T扩展于FastThreadLocalAccess,InternalThreadLocalMap是它的成员变量,set()时放入InternalThreadLocalMap的成员变量数组,下标是index,get()时从InternalThreadLocalMap的成员变量数组中下标是index处取。

发表在 编程语言 | 标签为 , , | Comments Off on Netty5源码学习之buffer篇(一):PooledHeapByteBuf