Netty里的内存管理是通过ByteBuf这个类作为橋梁连接着业务代码与jdk底层的内存所以理解ByteBuf的结构就很有必要了。
ByteBuf的内部结构如下图: 这里通过两个指针readerIndex与writerIndex分别指向已经读到的位置囷写入的位置,比JDK提供的ByteBuffer 省了flip操作类结构如图所示:- Unsafe和非Unsafe:这里的Unsafe是JDK底层的对象,通过它能够直接操作到内存
- Heap和Direct:一个是在堆上分配,一个是直接内存Direct不受GC的控制。