bytebuf 字节数组缓冲区,
0 readerIndex writerIndex capacity 可边读边写
jdk bytebuffer: position,limit,capacity(position相当于readerIndex和writerIndex,取决于是处于read mode还是write mode,limit在write mode下是capacity,flip切换到read mode后limit固定在最后write的position)
动态扩展,write调用检查可用空间,可能会自动扩容(不超过maxCapacity)
bytebuffer不会,它需要我们自己检查可用空间
支持mark reset readerIndex和writerIndex,支持随机读写
duplicate 新对象共享内容,维护自己的 readerIndex和writerIndex
copy 新对象内容和索引都是自己的
slice 新对象共享内容,维护自己的 readerIndex和writerIndex,但是只含部分区域
常用实现:
heap :内存分配回收(jvm gc)快,IO读写时需额外复制到内核Channel,此时慢
direct 分配回收慢,无需额外复制
pooled 内存池,重用对象,推荐(高并发)
unpooled 简单
unsafe,使用PlatformDependent,具有平台相关性