Netty buffer缓冲区ByteBuf

简介:
byte 作为网络传输的基本单位,因此数据在网络中进行传输时需要将数据转换成byte进行传输。netty提供了专门的缓冲区byte生成api ByteBuf。

Buffer API主要包括:

ByteBuf
ByteBufHolder
Netty 缓冲 API 提供了几个优势:

可以自定义缓冲类型
通过一个内置的复合缓冲类型实现零拷贝
扩展性好,比如 StringBuilder
不需要调用 flip() 来切换读/写模式
读取和写入索引分开
方法链
引用计数
Pooling(池)
ByteBuf索引

读索引
写索引
ByteBuf使用模式
heap buffer(堆缓冲区)

数据存储在 JVM 的堆空间
GC 可以及时释放内存空间
direct buffer(直接缓冲区)

没有中间内存交换的二次拷贝,也就是通常说的“零”拷贝。
驻留在垃圾回收扫描的堆区以外,需要手工管理内存(分配和释放等)。
在 -XX:MaxDirectMemorySize=xxM大小限制下, 使用 Heap 之外的内存, GC对此”无能为力”,也就意味着规避了在高负载下频繁的GC过程对应用线程的中断影响。
composite buffer(复合缓冲区)

可以创建多个不同的 ByteBuf,然后提供一个这些 ByteBuf 组合的视图。
复合缓冲区就像一个列表,我们可以动态的添加和删除其中的 ByteBuf,JDK 的 ByteBuffer 没有这样的功能。







本文转自秋楓博客园博客,原文链接:http://www.cnblogs.com/rwxwsblog/p/7794277.html,如需转载请自行联系原作者
目录
相关文章
|
17天前
|
Java API 容器
《跟闪电侠学Netty》阅读笔记 - 数据载体ByteBuf
《跟闪电侠学Netty》阅读笔记 - 数据载体ByteBuf
92 0
|
9月前
|
Java API 开发者
Netty详解ByteBuf
Netty详解ByteBuf
52 0
|
17天前
|
Java API 索引
Netty Review - ByteBuf 读写索引 详解
Netty Review - ByteBuf 读写索引 详解
67 1
|
17天前
|
编解码 网络协议
Netty基础篇:NIO中缓冲区设置太小
Netty基础篇:NIO中缓冲区设置太小
|
17天前
|
Java API
《跟闪电侠学Netty》阅读笔记 - 数据载体ByteBuf(二)
《跟闪电侠学Netty》阅读笔记 - 数据载体ByteBuf
32 0
|
17天前
|
API 容器
《跟闪电侠学Netty》阅读笔记 - 数据载体ByteBuf(一)
《跟闪电侠学Netty》阅读笔记 - 数据载体ByteBuf
42 0
《跟闪电侠学Netty》阅读笔记 - 数据载体ByteBuf(一)
|
11月前
|
存储 网络协议 Java
Netty入门到超神系列-Java NIO 三大核心(selector,channel,buffer)
选择器,也叫多路复用器,Java的NIO通过selector实现一个线程处理多个客户端链接,多个channel可以注册到同一个Selector,Selector能够监测到channel上是否有读/写事件发生,从而获取事件和对事件进行处理,所以Selector切到哪个channel是由事件决定的。当线程从某个客户端通道未读取到数据时,可以把空闲时间用来做其他任务,性能得到了提升。
107 0
|
11月前
|
弹性计算 Java API
Netty入门到超神系列-Java NIO 三大核心(selector,channel,buffer)
理解Selector 和 Channel Selector 选择器,也叫多路复用器,可以同时处理多个客户端连接,多路复用器采用轮询机制来选择有读写事件的客户端链接进行处理。 通过 Selector ,一个 I/O 线程可以并发处理 N 个客户端连接和读写操作,这解决了传统同步阻塞 I/O 一连接一线程模型,架构的性能、弹性伸缩能力和可靠性都得到了极大的提升。 由于它的读写操作都是非阻塞的,这就可以充分提升 IO 线程的运行效率,避免由于频繁 I/O 阻塞导致的线程挂起。
195 0
|
11月前
|
存储 Java API
Netty实战(五)ByteBuf—Netty的数据容器
网络数据的基本单位总是字节。Java NIO 提供了 ByteBuffer 作为它的字节容器,但是这个类使用起来过于复杂,而且也有些繁琐。**ByteBuffer 替代品是 ByteBuf**,一个强大的实现,既解决了 JDK API 的局限性,又为网络应用程序的开发者提供了更好的 API。
146 0
|
11月前
|
存储 Java Linux
Netty ByteBuf 的零拷贝(Zero Copy)详解
Netty ByteBuf 的零拷贝(Zero Copy)详解
141 0