netty ByteBuf vs java NIO ByteBuffer
所属分类 netty
浏览量 1273
使用更简单
通过复合缓冲区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切入点