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

相关推荐
小白学大数据1 分钟前
分布式爬虫核心技术详解与工程实践
开发语言·分布式·爬虫·python
CoderCodingNo5 分钟前
【GESP】C++一级真题 luogu-B4495, [GESP202603 一级] 交朋友
开发语言·c++
我命由我123457 分钟前
Android Jetpack Compose - SearchBar(搜索栏)、Tab(标签页)、时间选择器、TooltipBox(工具提示)
android·java·java-ee·kotlin·android studio·android jetpack·android-studio
276695829214 分钟前
token1005 算法分析
java·前端·javascript·token·token1005·携程酒店·token算法分析
海寻山15 分钟前
Java内部类:4种类型+实战场景+面试避坑
java·开发语言·面试
Lsk_Smion19 分钟前
Hot100(开刷) 之 长度最小的数组--删除倒数第N个链表--层序遍历
java·数据结构·算法·kotlin
梦游钓鱼21 分钟前
stl常用容器说明
开发语言·c++
2601_9507039428 分钟前
PyCharm性能优化终极指南
java
踏着七彩祥云的小丑30 分钟前
Python——字符串常用操作
开发语言·python
成都易yisdong35 分钟前
基于C#和WMM2025模型的地磁参数计算器实现
开发语言·c#