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

相关推荐
Frank_refuel4 小时前
C++之STL->string类的使用和实现
java·开发语言·c++
feifeigo1234 小时前
图像重建中软阈值方法的原理和MATLAB实现
开发语言·matlab
江南十四行4 小时前
Python多线程与多进程实战——避开GIL,榨干CPU
开发语言·网络·python
小凡子空白在线学习4 小时前
工作拆分so总结
java·jvm·算法
88号技师4 小时前
2026年2月新锐一区SCI-完整家庭互动优化算法Undivided Family Interaction Algorithm-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
手揽回忆怎么睡4 小时前
java打包无效的发行版:xx,临时修复当前窗口指定 JDK21
java·开发语言
Eric.Lee20214 小时前
python实现多个pdf合并
开发语言·python·pdf·pdf合并
一直有一个ac的梦想5 小时前
cmu15445 2025fall lec15 query optimiaztion Pt1
java·服务器·数据库
郝学胜-神的一滴5 小时前
干货版《算法导论》03:动态数组 × 链表的极致平衡艺术
java·数据结构·c++·python·算法·链表
SamDeepThinking5 小时前
IntelliJ IDEA 中有什么让你相见恨晚的技巧?
java·后端·程序员