ByteBuf 详解

进行数据传输 ,需要使用缓冲区。ByteBuf是一个Byte数组的缓冲区,通过两个指针来协助读写操作。以下ri标识readIndex wi标识writeIndex。

  1. 1.1 工作原理

工作原理

图示原理

刚初始化的ByteBuf
ByteBuf 详解
写入N个字节后
ByteBuf 详解
读取M个字节 M < N
ByteBuf 详解
调用discardReadBytes 操作之后的
ByteBuf 详解
调用clear之后
ByteBuf 详解

分析如何动态扩展

ByteBuf的write 操作进行了封装,进行剩余空间的校验,如果可用缓冲区不足,会自动进行扩展。

功能介绍

顺序读

ByteBuf 详解
ByteBuf 详解
ByteBuf 详解

顺序写

ByteBuf 详解
ByteBuf 详解

readIndex writeIndex

ri和wi将ByteBuf缓冲区分割为三个区域
ByteBuf 详解
可以调用discardReadBytes 来重用空间 节省内存,但是会发生数组复制,频繁调用可能会产生性能下降

Readable bytes 和 writeable bytes

可读空间是实际存贮的区域 可写字段是尚未被使用可以填充的空间

Mark / Reset

对于缓冲区的操作 ,由于某种原因需要对之前的操作进行回滚,调用mark会将当前的指针备份到mark变量中,调用reset的时候,重新将指针至于mark’的位置
ByteBuf 详解