zoukankan      html  css  js  c++  java
  • netty--buffer分配策略

    AdaptiveRecvByteBufAllocator 动态分配buffer大小的类。

    如果前一次读取完全填满了分配的缓冲区,它将逐渐增加预期的可读字节数。(增加的方式:初始化类的时候,会预先设置好可以动态增加的值,代码如下:)

    static {
            List<Integer> sizeTable = new ArrayList<Integer>();
            for (int i = 16; i < 512; i += 16) {
                sizeTable.add(i);
            }
    
            for (int i = 512; i > 0; i <<= 1) {
                sizeTable.add(i);
            }
    
            SIZE_TABLE = new int[sizeTable.size()];
            for (int i = 0; i < SIZE_TABLE.length; i ++) {
                SIZE_TABLE[i] = sizeTable.get(i);
            }
        }
    

      数组内存放的值:小于512的值,两个数的差值为16;大于512,值左移1位(相当于乘以2)。

    值:16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304,320,336,352,368,384,400,416,432,448,464,480,496,

    512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576,2097152,4194304,8388608,16777216,33554432,67108864,134217728,268435456,536870912,1073741824

    增加和减少的buffer大小,都取决于该数组的值。

    如果读取操作不能连续两次填充一定数量的分配缓冲区,则会逐渐减少预期的可读字节数。

    否则,它会继续返回相同的预测。

  • 相关阅读:
    MyBatis_2
    JDBC(java database connectivity)
    异常的各种情况
    Spring(一)
    SpringMVC(四)
    SpringMVC(三)
    SpringMVC(二)
    springMVC文件上传、拦截器、数据校验
    springMVC数据相关
    初步接触springMVC
  • 原文地址:https://www.cnblogs.com/chen--biao/p/11333283.html
Copyright © 2011-2022 走看看