摘要:
AbstractByteBuf 主要成员变量 很显然缓冲区的实现由子类自行定义 读操作簇 写操作簇 参数是当前所需最小的容量和允许的最大容量,返回调整后的容量值 参数自身边界大于等于0检查 参数相对于最大容量的边界检查 threshold=4MB equal just return Not over 阅读全文
摘要:
概述(Motivation) netty总的内存池是一个数组,数组每一个成员是一个独立的内存池。相当于一个国家(netty)有多个省(poolArena)分别自治管理不同的地区。 实现细节(Modification) 分配总述 先不看树形,单纯从arena框住的地方来看,有几个 的链表,还有两个 数 阅读全文
摘要:
概述(Motivation) 其他的神马分配其实归根结底还是靠 来做,只是别的操作把 组成大集装箱或者拆成多个小方块。 简单来说,chunk拥有着一块16MiB的地址,它利用伙伴算法拆分以8k大小的page为基准块的内存空间。 实现细节(Modification) 算法描述 / Descriptio 阅读全文
摘要:
概述(Motivation) 使用位图的方式管理一段内存,用于管理小内存的。 实现细节(Modification) 将一个page等分分成多个elem,利用long位图进行管理 构造函数 java PoolSubpage(PoolSubpage head, PoolChunk chunk, int 阅读全文
摘要:
概述(Motivation) chunklist 实现细节(Modification) 主要成员 分配函数 释放函数 java boolean free(PoolChunk chunk, long handle) { chunk.free(handle); // 如果释放后当前使用量低于限定值,移动 阅读全文
摘要:
ThreadLocal 使用场景 使用场景是在于同一个类,但是会开多个线程执行,但是每一个线程可以保持不同的变量状态。 做法如上图,线程类 有成员变量 ,用来存储该线程中的所有的 变量,初始化是一个 数组。 内存泄漏 继承于 ,简单说一下四种引用。强引用,就是我们常规使用的new出来一个对象,这时候 阅读全文
摘要:
概述(Motivation) 如果说netty维护了一个总的内存缓冲池,那么这个就是线程自己的内存缓冲池,它的工作大致是线程从“总池”获得的内存用完并不直接还回去,而是暂放到自己的内存缓冲池中。 实现细节(Modification) 主要成员变量 构造函数 这里用到了allocator传过来的三个 阅读全文