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逻辑上组合到一起,避免内存复制。

相关推荐
脸大是真的好~2 分钟前
计算机408基础相关面试题-备用,不推荐
java
云上漫步者2 分钟前
深度实战:Rust交叉编译适配OpenHarmony PC——unicode_width完整适配案例
开发语言·后端·rust·harmonyos
小费的部落3 分钟前
Excel 在Sheet3中 匹配Sheet1的A列和Sheet2的A列并处理空内容
java·前端·excel
咘噜biu4 分钟前
多租户动态数据源插件dynamic-datasource简介
java·mybatisplus·动态数据源·多租户
漫漫求6 分钟前
Java内存模型【JMM】、JVM内存模型
java·开发语言·jvm
原来是好奇心6 分钟前
深入Spring Boot源码(五):外部化配置与Profile机制深度解析
java·源码·springboot
IT界的奇葩7 分钟前
OAuth2 单点登录流程图
java·流程图·oauth2·单点登录·sso
田姐姐tmner12 分钟前
Python 全面语法指南
开发语言·python
white-persist21 分钟前
【攻防世界】reverse | simple-check-100 详细题解 WP
c语言·开发语言·汇编·数据结构·c++·python·算法
wuguan_25 分钟前
C#中的静态成员、常量和只读变量
开发语言·c#