netty ChannelBuffer

       ChannelBuffer是netty自己的缓冲区,用于替代nio的Buffer,这种替代具有显著的优势,解决了Buffer存在的一些问题,满足了日常网络应用程序开发的需求。具有以下特点:

  1. 如果必要的话,可以定义自己的ChannelBuffer。
  2. 通过复合缓冲区CompositeChannelBuffer实现透明的零拷贝”Zero-Copy-Capable”。
  3. 提供了一个开箱即用的动态缓冲区DynamicChannelBuffer,其容量可动态扩大,就像StringBuffer。
  4. 不用在使用flip()进行读写反转了。
  5. 通常比ByteBuffer快。
       零拷贝”Zero-Copy-Capable”机制是指在TCP/IP传输层接收到的多个数据包(一个数据包封装为一个 ChannelBuffer),在应用层组成了一个完整的协议报文数据,传统上,数据是从多个包结合将它们复制到一个新的字节缓冲区,而零拷贝组合已有缓冲区为一个对外透明的缓冲区,提供给应用层使用,从而消除了缓冲区的复制。如下图所示: