ByteBuf

作者: 码农崛起 | 来源:发表于2018-04-23 09:58 被阅读0次

jdk自带ByteBuffer,看名字就知道作用差不多,区别是ByteBuffer读写都用一个指针,ByteBuf读写各有一个指针。

都分为基于java heap的head buffer和基于DirectBuffer的buffer。
DirectBuffer是不能被gc的,用完需要手动释放,虽然麻烦但是效率高,看吧,谁都有优点和缺点。

加上一大堆看名字就知道干嘛的方法。

ByteBuf是个抽象类,源代码里的文档建议使用Unpooled的静态方法创建各种ByteBuf之类。
这些方法分类一下:

buffer* 基于java heap的buf
directBuffer* 基于nio的buffer
wrappedBuffer* 基于底层 byte[]/ByteBuf/ByteBuffer 的视图
compositeBuffer* 多个ByteBuf的组合buffer
copiedBuffer* 复制底层 char[]/byte[]/ByteBuf/ByteBuffer 的可读数据
copy* 基础数据类型转为byte[]

既然叫Unpooled,那说明还有Pooled啦,所谓Unpooled就是每次都分配新的ByteBuf。
Pooled就是分配一个大的buffer,每次都返回大buffer的一个视图。direct buffer和Pooled buffer都是需要手动释放的。然后就引入了一个垃圾收集的经典算法:引用计数,所以推荐使用Unpooled,当使用direct buffer,注意引用计数,防止内存泄露。

本节完。。。

相关文章

  • 读书笔记:ByteBuf

    ByteBuf的优点 ByteBuf的工作原理 在ByteBuf中存在一个readIndex和一个writeInd...

  • Netty ByteBuf入门

    Netty ByteBuf ByteBuf的基本结构 ByteBuf由一段地址空间,一个read index和一个...

  • Netty 内存分配 ByteBuf

    初识ByteBuf ByteBuf是io和应用程序的中间层;读数据时,ByteBuf先从io中读取,在发送给应用程...

  • netty(十一)初识Netty - ByteBuf 创建与读写

    本章节主要学习一下netty当中的ByteBuf,ByteBuf是对字节数据的封装。 接下来主要学习Bytebuf...

  • Netty学习--ByteBuf

    Netty使用ByteBuf替换Java NIO提供的ByteBuffer(使用过于复杂). ByteBuf 的A...

  • [Netty源码分析]ByteBuf(五)

    ByteBuf的释放

  • Netty系列-Bytebuf中pool、unpool、heap

    上一篇介绍了ByteBuffer和ByteBuf结构,Bytebuf提供接口方法要比ByteBuffer简洁并强大...

  • ByteBuf

    jdk自带ByteBuffer,看名字就知道作用差不多,区别是ByteBuffer读写都用一个指针,ByteBuf...

  • ByteBuf

    体系结构 从图可以看出来,ByteBuf分类主要是三个维度:Unpooled和PooledUnsafe和非Unsa...

  • ByteBuf

    介绍: 网络数据的基本单位是字节,ByteBuf是Netty的数据容器;Java NIO提供了ByteBuffer...

网友评论

      本文标题:ByteBuf

      本文链接:https://www.haomeiwen.com/subject/kdjklftx.html