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

相关推荐
spencer_tseng10 分钟前
Unlikely argument type for equals(): JSONObject seems to be unrelated to String
java·equals
爱敲代码的小鱼23 分钟前
事务核心概念与隔离级别解析
java·开发语言·数据库
小冷coding35 分钟前
【Java】遇到微服务接口报错导致系统部分挂掉时,需要快速响应并恢复,应该怎么做呢?如果支付服务出现异常如何快速处理呢?
java·开发语言·微服务
星火开发设计36 分钟前
二维数组:矩阵存储与多维数组的内存布局
开发语言·c++·人工智能·算法·矩阵·函数·知识
夜勤月41 分钟前
彻底终结内存泄漏与悬挂指针:深度实战 C++ 智能指针底层原理与自定义内存池,打造稳如泰山的系统基石
开发语言·c++
一个处女座的程序猿O(∩_∩)O1 小时前
Nacos 中的 Namespace 深度解析:实现多租户隔离的关键机制
java
HeisenbergWDG1 小时前
线程实现runnable和callable接口
java·开发语言
少控科技1 小时前
QT新手日记028 QT-QML所有类型
开发语言·qt
JavaGuide1 小时前
IntelliJ IDEA 2026.1 EAP 发布!拥抱 Java 26,Spring Boot 4 深度支持!
java·后端·mysql·springboot·idea·大厂面试·javaguide
HarmonLTS1 小时前
Python人工智能深度开发:技术体系、核心实践与工程化落地
开发语言·人工智能·python·算法