netty数据缓冲区与nio缓冲区的区别

nio中ByteBuffer和netty中的ByteBuf相比确实后者更加的好用:

(1)ByteBuf可以在用户使用数据区空间不足的情况下以2的指数倍扩容,相比ByteBuffer的char数组是final修饰的,一旦需要扩容只能人为手动干预,并且只能重新申请数组并copy才可以。

(2)ByteBuf有readIndex和writeIndex两个概念,从而把数据区分为3段,一段为已经都去过的可丢弃的数据区discardReadArea(从0位置到readIndex位置);一段为可读取的区域readArea(从readIndex位置到writeIndex位置);最后一段是可写的数据区writeArea(从writeIndex位置到capacity位置),相比ByteBuffer在数据区只有position和limit配合使用更加灵活。

(3)netty的ByteBuf有三种容器,除了堆内存储,堆外存储以外。还添加了一种容器,这种容器可以将堆内存储,堆外存储合并在一起处理,消除底层差异。

posted @ 2019-12-24 10:33  soft.push("zzq")  Views(581)  Comments(0Edit  收藏  举报