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