Netty 组件介绍 - ByteBuf

直接内存&堆内存

java 复制代码
   ByteBuf buffer = ByteBufAllocator.DEFAULT.heapBuffer(10);

   ByteBuf byteBuf = ByteBufAllocator.DEFAULT.directBuffer(10);

组成

ByteBuf维护了两个不同的索引,一个用于读取,一个用于写入。

写入

内存回收

  • 堆内存使用的是JVM内存,等待GC即可。
  • 直接内存,建议手动回收内存

Netty采用引用计数法来控制回收内存。谁是最终使用者,谁来释放ButeBuf.

  • 每个ByteBuf对象的初始计数为1
  • 调用relase方法计数减1,如果计数为0,ByteBuf被回收
  • 调用retain方法啊计数加一,表示调用者没用完之前,其他hander即使调用了release也不会造成回收。

slice

对原始的ByteBuf进行切片成多个ButeBuf,切片后的ButeBuf拥有独立的读写指针。切片后对最大容量做了限制。

composite

将ByteBuf逻辑上组合到一起,避免内存复制。

相关推荐
E_ICEBLUE7 分钟前
Python 处理 Word 文档中的批注(添加、删除)
开发语言·python·microsoft·word
itachi-uchiha16 分钟前
关于Tomcat的页面后台管理默认设置
java·tomcat·firefox
骑着bug的coder18 分钟前
RestTemplate 和 Feign 传参差异导致的接口调用失败
java
momo_via31 分钟前
maven下载与安装及在IDEA中配置maven
java·maven·intellij-idea
勇闯逆流河34 分钟前
【C++】红黑树详解
开发语言·数据结构·c++
Deschen41 分钟前
设计模式-适配器模式
java·设计模式·适配器模式
开发游戏的老王1 小时前
虚幻引擎虚拟制片入门教程 之 模型资源的导入
java·游戏引擎·虚幻
编啊编程啊程1 小时前
【004】生菜阅读平台
java·spring boot·spring cloud·dubbo·nio
Craaaayon1 小时前
【数据结构】二叉树-图解广度优先搜索
java·数据结构·后端·算法·宽度优先
岁岁岁平安1 小时前
Java+SpringBoot+Dubbo+Nacos快速入门
java·spring boot·nacos·rpc·dubbo