读ByteBuf有感
来源:互联网 发布:超星尔雅刷课软件 编辑:程序博客网 时间:2024/06/05 03:32
由于JAVA NIO的ByteBuffer类存在三个严重的缺点:
- 1。只有一个缓存游标用于复杂的缓存读写操作- 2。缓存的大小固定,没有动态扩展功能,为了不出现缓存溢出异常,需要用户在对缓存进行写操作的时候进行麻烦的可写空间的检测。- 3。没有封装缓存类常用的的方法。(连用于通讯IO常用的方法都没有)
因此ByteBuf对ByteBuf对原生的NIO ByteBuffer进行了扩展,弥补了原生的各种缺陷。
类比StringBuffer扩展String,StringBuffer是线程安全的
看完ByteBuf的类继承结构知道了:
ByteBuf接口实现了ByteBuf的基本操作
AbstractByteBuf对这些接口进行实现
AbstractRefenceCountByteBuf继承了AbstractByteBuf加了引用计数机制
1.之后针对于资源重用对AbstractRefenceCountByteBuf扩展,加入了缓存池机制 Pool
2.针对于内存分配速度扩展了基于JAVA堆分配内存的heapByteBuf,分配速度快,但是不适合用于IO,因为需要耗时的缓存复制
3.针对IO的零拷贝使用directByteBuf,但是由于采用内核分配空间,所以速度有些慢,但是省去了用户层和内核层间的数据拷贝工序
需要注意的3个方法:
discardReadBuffer() 把已经读取(下标0~readindex之间)的内容删除,后面的内容往前面挪动,数据的挪动影响性能
duplicate()方法,软拷贝,共享内存,readindex=writeIndex=0
copy() 深拷贝,不共享内存readindex=writeIndex=0
slice() 软拷贝,将readIndex~writeIndex之间的内容拷贝一份,共享内存,相当于把没读的部分引用过来
flip()
flip的作用有两个:
1. 把limit设置为当前的position值
2. 把position设置为0
0 0
- 读ByteBuf有感
- ByteBuf
- ByteBuf
- 04 ByteBuf
- 5 ByteBuf
- ByteBuf缓冲区
- Netty ByteBuf
- Netty ByteBuf
- 读 有感
- 读有感
- 读有感
- netty 学习之bytebuf
- Netty - Bytebuf(1)
- Netty - ByteBuf (2)
- Netty - ByteBuf (3)
- Netty之ByteBuf
- netty的ByteBuf
- Netty bytebuf 内存泄漏
- java 中的构造代码块和构造函数以及静态代码块
- 程序调试记录
- 对于张量展开矩阵的理解
- 线程 thread_once
- 中国剩余定理 (非互质情况)
- 读ByteBuf有感
- 存储过程和函数的区别
- 洛谷 1417
- Anaconda的使用
- c#在DataGridView中插入一列
- 学习资源整理分享
- Struts2的Action类详解(深入表单登录并验证)
- android fastboot模式下载以及出现的问题
- eclipse代码迁移到Android Studio