Netty bytebuf 源码解析
来源:互联网 发布:阿里云服务器合同 编辑:程序博客网 时间:2024/04/28 02:22
java nio bytebuffer 和 bytebuf的对比
1. 原生的类长度固定,不能动态扩容和收缩
2. 只有一个读写标志位 position, 操作不灵活
3. API较少,一些适用的操作不支持。
ByteBuf 实现类的分配
按内存分配看,
1. 堆内存, 内存分配和回收较快, Socket I/O 读写需要内存复制,会变慢
2. 直接内存。对应上面则较慢, 较快
建议: I/O 通信线程的读写缓冲区使用DirectByteBuf。 后端业务消息的编解码块使用HeapByteBuf.
从内存回收看
1. 基于对象池的ByteBuf. 高负载,大并发
2. 普通ByteBuf。
writeBytes(ByteBuf src, int srcIndex, int length)
扩容方式: 固定阈值是4mb, 如果大于4M 就采用步长的增长方式
小于4m的就用倍数的增长方式。步长和倍数两种方式混合使用,目的就是为了有效利用空间。
UnpooledHeapByteBuf 基于堆,没有基于对象池技术实现,每一次I/O 读写都会创建一个新的
PooledDirectByteBuf 对象池技术 与UnPo….不同的是内存分配策略不太一样。
一次性申请一大块内存,这样就不需要频繁地申请和释放内存了。
chunk 16个page, 一个page 4个字节, 二叉树。
page
PoolSubpage page中的内存分配,取决于第一块的内存大小。
ByteBuf 辅助类
ByteBufHolder 封装一个ByteBuf ,添加其他的辅助方法,例如http 消息体
CompositeByteBuf 将多个ByteBuf组合在一起,相当于视图的功能。
ByteBufAllocator 字节缓冲分配器 (两种基于内存池和普通)
- Netty bytebuf 源码解析
- 【Netty源码】ByteBuf源码剖析
- Netty ByteBuf原理及其源码分析
- netty源码分析 之十一 ByteBuf
- netty源码学习第三章:ByteBuf
- Netty 4.0 源码分析(四):ByteBuf
- netty(十)源码分析之ByteBuf
- Netty ByteBuf
- Netty ByteBuf
- ByteBuffer和ByteBuf源码解析
- Netty源码分析(五)—ByteBuf源码分析
- 【Netty4.X】Netty源码分析之ByteBuf(七)
- netty(十一)源码分析之ByteBuf 二
- netty(十一)源码分析之ByteBuf 三
- netty(十二)源码分析之ByteBuf 四
- Netty 权威指南笔记(五):ByteBuf 源码解读
- netty 学习之bytebuf
- Netty - Bytebuf(1)
- poi导出excel操作
- Java多线程系列--“JUC线程池”03之 线程池原理(二)
- STL容器Map和Mutimap
- Linux学习掌握(二):CentOS系统中搭建java开发环境与部署web项目
- 双目视觉的摄像头选择问题
- Netty bytebuf 源码解析
- 常用控件:列表框控件ListBox
- 3列布局两边固宽中间自适应
- Longest Substring Without Repeating Characters
- 装饰request和response
- log4j:ERROR Could not find value for key log4j.appender.Console解决方法
- ajax
- Origin使用
- java注解:如何实现和使用一个自定义注解?