Netty底层的策略
- Netty底层提供了扩容,涉及数据拷贝,可预测的缓冲区处理
- C语言的分配内存由Malloc实现
AdaptiveRecvByteBufAllocator
- AdaptiveRecvByteBufAllocator根据返回的大小会自动增或减可预测的Buffer,基于之前的读与写的对比的布局的调节大小
AdaptiveRecvByteBufAllocator关系图
- 该RecvByteBufAllocator在反馈时自动增长和减少预测的缓冲区大小。
如果前面的读操作完全填满了分配的缓冲区,那么它将徐徐增长预期的可读字节数。如果read操作不能连续两次填充分配的缓冲区的肯定数量,则会徐徐减少预期的可读字节数。否则,它将不绝返回相同的预测。
- RecvByteBufAllocator源码备注
//静态代码块的作用是对SIZE_TABLE数组填写1~38的坐标的值是16,32,48....不绝到65536 //自动减少大概增长的幅度就是来自于这个数组。具体逻辑在HandleImpl对的record方法。 static { List sizeTable = new ArrayList(); for (int i = 16; i < 512; i += 16) { sizeTable.add(i);//1~16的设置是16到(512-16) } for (int i = 512; i > 0; i |