蹭蹭加油站 发表于 2021-8-24 21:59:54

10、Netty自适应缓冲区分配策略源码分析

Netty底层的策略


[*]Netty底层提供了扩容,涉及数据拷贝,可预测的缓冲区处理
[*]C语言的分配内存由Malloc实现
AdaptiveRecvByteBufAllocator


[*]AdaptiveRecvByteBufAllocator根据返回的大小会自动增或减可预测的Buffer,基于之前的读与写的对比的布局的调节大小
https://p5.toutiaoimg.com/large/pgc-image/f9c031af1a7a4d9a827c71724171c450AdaptiveRecvByteBufAllocator关系图

[*]该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
页: [1]
查看完整版本: 10、Netty自适应缓冲区分配策略源码分析