当前位置: 首页 > news >正文

《Netty》从零开始学netty源码(五十一)之PoolArena的内存释放与扩容

目录

    • 释放空间free()
      • destroyChunk()
      • freeChunk()
    • 扩容reallocate()
      • memoryCopy()

释放空间free()

当chunk使用完毕后需要释放,如果是池化chunk则需要放回池中供下次循环利用,如果是非池化的则直接释放对应的物理空间。

在这里插入图片描述

下面继续分析释放具体物理空间的destroyChunk()方法和释放chunk的freeChunk()方法。

destroyChunk()

该方法为抽象方法,由具体实现类实现,以DirectArena为例

在这里插入图片描述

freeChunk()

释放chunk的时候会调用PoolChunkList的free()方法进行处理,根据释放后chunk的利用率决定是否向前移动,即移动到利用率更低的PoolChunkList,如果利用率已经低于1%则需要删除不再使用,同时要释放其对应的物理空间。

在这里插入图片描述

扩容reallocate()

在使用buf的过程中有时候我们需要扩大容量存放更多的数据或者减少容量,reallocate()方法就提供该项功能。

在这里插入图片描述

在这个过程中allocate()、free()方法之前已经分析过,接下来继续分析数据拷贝的memoryCopy()。

memoryCopy()

在这里插入图片描述

至此,PoolArena类分析至此完毕,感谢阅读。

全文完,如果觉得文章有点意思,不妨点个“赞”或者“在看”吧,您的每一份正反馈都是对三横兰写作的最大肯定,感谢阅读_

每天坚持一点点,每天进步一点点

坚持是日复一日,质变需日积月累

我是三横兰,那个三横的兰
请添加图片描述

http://www.lryc.cn/news/64205.html

相关文章:

  • Android Input系统事件分发分析
  • Linux-基本指令2
  • 辨析 项目范围核查、WBS核查
  • 跳跃游戏类题目 总结篇
  • Ubuntu20.04 交叉编译Paddle-OCR
  • Java 基础进阶篇(四)—— 权限修饰符、final 关键字与枚举
  • Linux命令集(Linux文件管理命令--touch指令篇)
  • 软件工程学习教程大纲
  • 使用ChatGPT生成了十种排序算法
  • GEE:MODIS计算遥感指数(NDVI、BSI、NDSI、EVI、LSWI、SIPI、EBI等)
  • 《*** 法治思想学习纲要》学习辅导
  • 初识Go语言18-面向对象【面向对象的概念、构造函数、继承与重写 泛型】
  • 4.微服务项目实战---Sentinel--服务容错
  • Postgres SELECT INSERT 流程 ?
  • OpenAI推企业版ChatGPT,英伟达造AI安全卫士
  • 【原创】运维的终点是开发~chatGPT告诉你真相
  • SSH 服务器、NFS 服务器、TFTP 服务器详解及测试
  • 1.3 HBase 基本架构
  • 微机作业题
  • 非极大值抑制详细原理(NMS含代码及详细注释)
  • 女朋友说总是记不住Git命令,怎么办?安排!
  • 【ChatGLM】本地版ChatGPT ?6G显存即可轻松使用 !ChatGLM-6B 清华开源模型本地部署教程
  • 【MySQL】练习六 关系数据理论及数据库设计
  • UG NX二次开发(C++)-建模-修改NXObject或者Feature的颜色(一)
  • 全球天气weather.com的icon汇总表 天气现象代码枚举
  • 【Python】【进阶篇】16、settings.py配置文件详解
  • 【华为机试】HJ1 字符串最后一个单词的长度
  • Spring DI简介及依赖注入方式和依赖注入类型
  • ES6栈方法和队列方法
  • EventBus(事件总线)的使用和源码的简单解析