Netty的ByteBuf是JDK中ByteBuffer的升級版,提供了NIO buffer和byte數(shù)組的抽象視圖。
ByteBuf的主要類集成關(guān)系:
(圖片來自Netty權(quán)威指南,圖中有一個畫錯的地方是PooledByteBuf中的最后一個子類應(yīng)該是PooledUnsafeDirectByteBuf)
從繼承關(guān)系可以看出AbstractReferenceCountedByteBuf的子類分為兩類:Pooled和Unpooled的ByteBuf。
Pooled ByteBuf是基于對象池的ByteBuf(會被緩存),Unpooled則是普通的ByteBuf對象。
無論是否基于內(nèi)存池的ByteBuf,它的子類有分為DirectByteBuf和HeapByteBuf分別表示在堆外內(nèi)存分配的緩沖區(qū)和在堆內(nèi)存的緩沖區(qū)。
堆內(nèi)存緩沖區(qū)的特點(diǎn)是分配和回收速