ByteBuf的优点
1、它可以被用户自定义的缓冲区类型扩展
2、通过内置的复合缓冲区类型实现了透明的零拷贝
3、容量可以按需增长
4、在读和写这两种模式之间进行切换不需要调用ByteBuffer的flip方法
5、读和写使用了不同的索引
6、支持方法的链式调用
7、支持引用计数
8、支持池化
ByteBuf的工作原理
在ByteBuf中存在一个readIndex和一个writeIndex,其中readIndex的位置永远不能超过writeIndex,如果你试图这样做,那么你将会得到一个IndexOutOfBoundsException,其中readIndex和writeIndex之间的区域是可以读取的区域,writeIndex和ByteBuf容量之间的区域是可以写入的区域
ByteBuf的使用模式
1、堆缓冲区
是将数据存储在JVM的堆空间中,这种模式被称为支撑数组,它能在没有使用池化的情况下提供快速的分配和释放,会不会产生内存碎片呢?
2、直接缓冲区
直接缓冲区是使用堆外内存进行分配的操作,这主要是为了避免在每次调用本地I/O操作之前在缓冲区的内容复制到一个中间缓冲区中