首页  

netty ByteBuf vs java NIO ByteBuffer     所属分类 netty 浏览量 1286
使用更简单
通过复合缓冲区CompositeByteBuf实现zero-copy
容量可以按需增长
读和写使用不同的索引
支持链式调用
支持引用计数与池化
可以被用户自定义的缓冲区类型扩展

Netty的ByteBuf 提供多种分配器实现,如 PooledByteBufAllocator , 内存池 复用内存 降低GC压力 提升性能

 ByteBuf 功能更多、易用性和性能更好

ByteBuffer
三个重要属性
Capacity 缓冲区容量大小 缓冲区满了之后需要清理缓冲区才能继续写数据
Position 指向下一个写入数据位置的索引 初始位置为0 最大为capacity-1 当写模式转换为读模式时 position被重置为0
Limit 写模式时 ,limit是可以写入缓冲区的最大索引 ,等于缓冲区的容量 , 读模式时limit表示可以读取的最大索引

在读写模式之间的切换需要调用flip()方法来重置指针 Position

使用buffer的一般流程

写入数据到缓冲区
调用flip()方法
从缓冲区中读取数据
调用buffer.clear()或者buffer.compact()清理缓冲区,以便下次写入数据

上一篇     下一篇
dubbo实例

IO模式 Proactor与Reactor

select poll epoll 区别

netty高性能之道

PooledByteBufAllocator跟踪调试

netty代码debug切入点