程序员阿里云

Netty Unpooled 内存分配

2018-12-10  本文已影响3人  良辰美景TT

Netty里的内存管理是通过ByteBuf这个类作为桥梁连接着业务代码与jdk底层的内存。所以理解ByteBuf的结构就很有必要了。

ByteBuf

ByteBuf的内部结构如下图: 这里通过两个指针,readerIndex与writerIndex分别指向已经读到的位置和写入的位置,比JDK提供的ByteBuffer 省了flip操作。类结构如图所示: ByteBuf类结构图
ByteBuf分类

ByteBufAllocator

ByteBuf对象是通过ByteBufAllocator来进行生成的,其中AbstractByteBufAllocator里实现在大部分的功能,具体是pooled还是unpooled类型的byteBuf是留给相应的子类来实现的,而Heap和Direct是通过暴露不同的接口来区分的,Unsafe与非Unsafe是通过JDK内部的平台来进行判断是否能生成Unsafe类的ByteBuf。ByteBufAllocator类图如下: ByteBufAllocator类图
UnpooledByteBufAllocator分配heap内存
Unsafe与非Unsafe类型的byteBuf内部实现上的差异
UnpooledByteBufAllocator分配direct内存
上一篇 下一篇

猜你喜欢

热点阅读