两个组件
1.堆缓冲区 backing array模式
直接缓冲区的内容将驻留在常规的会被垃圾回收的堆之外。
为了举例说明,让我们考虑一下一个由两部分——头部和主体——组成的将通过 HTTP 协议
传输的消息。这两部分由应用程序的不同模块产生,将会在消息被发送的时候组装。该应用程序
可以选择为多个消息重用相同的消息主体。当这种情况发生时,对于每个消息都将会创建一个新
的头部。因为我们不想为每个消息都重新分配这两个缓冲区,所以使用 CompositeByteBuf 是一个
完美的选择。
JDK的方式实现
CompositeByteBuf
CompositeByteBuf 可能不支持访问其支撑数组,因此访问 CompositeByteBuf 中的数
据类似于(访问)直接缓冲区的模式
关键理解ByteBuf的结构,readIndex和writeIndex分离
除了实际的数据负载之外,我们还需要存储各种属性值。HTTP 响应便是一 个很好的例子,除了表示为字节的内容,还包括状态码、cookie 等。
ctrl+alt+b查看ByteBufHolder的实现
一种通过在某个对象所持有的资源不再被其他对象引用时释放该对象所持有的资源来优化内存使用和性能的技术。
原文:https://www.cnblogs.com/fubinhnust/p/11940291.html