《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类分析至此完毕,感谢阅读。
全文完,如果觉得文章有点意思,不妨点个“赞”或者“在看”吧,您的每一份正反馈都是对三横兰写作的最大肯定,感谢阅读_
每天坚持一点点,每天进步一点点
坚持是日复一日,质变需日积月累
我是三横兰,那个三横的兰

相关文章:
《Netty》从零开始学netty源码(五十一)之PoolArena的内存释放与扩容
目录 释放空间free()destroyChunk()freeChunk() 扩容reallocate()memoryCopy() 释放空间free() 当chunk使用完毕后需要释放,如果是池化chunk则需要放回池中供下次循环利用,如果是非池化的则直接释放对应的物理空间。 下面继续分析释放具体物理空间的des…...
Android Input系统事件分发分析
“本文基于Android13源码,分析Input系统中,事件分发的实现原理“ 整个事件分发到事件的确认过程很长,如果读者只是想大概了解一下,可以直接看末尾总结部分的流程图。 1. 前言 在文章之前,有必要提一下InputReader。其…...
Linux-基本指令2
文章目录 touch(新建一个文件)whoami(查看当前用户名)概念:1.你是如何看待指令的?2.我们在执行指令之前,我们应该先做什么? 概念:/tree . (树状显示文件夹和文件)rmdir && rmrmdirrm ctrl c通配符…...
辨析 项目范围核查、WBS核查
项目范围核查、WBS核查辨析 项目范围核查 项目目标是否完善和准确指标是否可靠和有效约束和限制条件是否真实和符合实际重要假设前提是否合理风险是否可以接受成功把握是否很大范围定义是否能够保证上述目标的实现范围能够给出的效益是否高于成本范围定义是否需要进一步进行辅…...
跳跃游戏类题目 总结篇
一.跳跃游戏类题目简单介绍 跳跃游戏是一种典型的算法题目,经常是给定一数组arr,从数组的某一位置i出发,根据一定的跳跃规则,比如从i位置能跳arr[i]步,或者小于arr[i]步,或者固定步数,直到到达某…...
Ubuntu20.04 交叉编译Paddle-OCR
第一步:交叉编译Paddle-Lite 参考链接:https://blog.csdn.net/sz76211822/article/details/130466597?spm1001.2014.3001.5501 第二步:交叉编译opencv4.x 参考链接:https://blog.csdn.net/sz76211822/article/details/13046168…...
Java 基础进阶篇(四)—— 权限修饰符、final 关键字与枚举
文章目录 一、权限修饰符二、final 关键字2.1 final 作用2.2 final 修饰变量举例2.3 常量 三、枚举3.1 枚举的格式3.2 枚举的特征3.3 枚举的应用 一、权限修饰符 权限修饰符 用于约束成员变量、构造器、方法等的访问范围。 权限修饰符: 有四种作用范围由小到大 (p…...
Linux命令集(Linux文件管理命令--touch指令篇)
Linux命令集(Linux文件管理命令--touch指令篇) Linux文件管理命令集(touch指令篇)6. touch(touch)1. 创建名为 file1 的空文件2. 创建名为 file1 和名为 file2 的多个文件3. 创建名为 file1 的文件并将访问时间设置为特定日期4. 创…...
软件工程学习教程大纲
软件工程学习教程大纲 第一章:软件工程概述 1.1 软件工程的定义和作用 软件工程的发展历程和趋势 软件工程的应用领域和特点 1.2 软件开发生命周期 软件开发生命周期的定义和阶段 软件开发生命周期的模型和方法 1.3 软件工程方法和工具 软件工程方法和工具…...
使用ChatGPT生成了十种排序算法
前言 当前ChatGPT非常火爆,对于程序员来说,ChatGPT可以帮助编写很多有用的代码。比如:在算法的实现上,就可以替我们省很多事。所以,小试牛刀一下,看看ChatGPT生成了排序算法怎么样? 简介 排序…...
GEE:MODIS计算遥感指数(NDVI、BSI、NDSI、EVI、LSWI、SIPI、EBI等)
作者:_养乐多_ 本文将介绍如何使用Google Earth Engine(GEE)进行遥感影像分析,具体地,使用MODIS数据集计算和可视化几种植被指数,以评估植被生长的状况,或者作为随机森林分类器训练需要的特征变量。 主要包括,NDVI、BSI、NDSI、EVI、LSWI、SIPI、EBI等。 NDVI(Normal…...
《*** 法治思想学习纲要》学习辅导
《*** 法治思想学习纲要》学习辅导 总分:100 及格分数:60 考试剩余时间: 1时 59分 35秒 单选题(共7题,每题5分) 1、全面依法治国中的“关键少数”是()。 正确答案:C、领导…...
初识Go语言18-面向对象【面向对象的概念、构造函数、继承与重写 泛型】
文章目录 面向对象面向对象的概念构造函数继承与重写泛型 面向对象 面向对象的概念 洗衣服过程剖析: 给洗衣机里加脏衣服和洗衣粉。启动洗衣机。洗衣机自动注水,然后滚动。脏衣服从黑颜色变成白颜色。洗衣机自动停止。 用面向过程的思想实现代码。 //…...
4.微服务项目实战---Sentinel--服务容错
4.1 高并发带来的问题 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络 原因或者自身的原因,服务并不能保证服务的 100% 可用,如果单个服务出现问题,调用这个服务…...
Postgres SELECT INSERT 流程 ?
SELECT 当执行SELECT查询时,PostgreSQL数据库会按照以下流程进行处理: 首先,查询语句会被发送到服务器。 服务器会接收查询请求,并根据查询条件从表中读取数据。 数据库会将数据存储在磁盘上的数据文件中,然后将其读…...
OpenAI推企业版ChatGPT,英伟达造AI安全卫士
GPT现在已经进入了淘金时代。虽然全球涌现出成千上万的大模型或ChatGPT变种,但一直能挣钱的人往往是卖铲子的人。 这不,围绕暴风眼中的大模型,已经有不少企业,开始研究起了大模型的“铲子”产品,而且开源和付费两不误…...
【原创】运维的终点是开发~chatGPT告诉你真相
文章目录 软件技术岗位鄙视链,你在哪层呢?让chatGPT告诉你运维工作好,还是开发工作好问它几个问题来自你的消息: 一个三年开发成长的案例和薪资来自ChatAI的消息:来自你的消息: 一个三年运维成长的案例和薪资来自ChatAI的消息:来自你的消息: …...
SSH 服务器、NFS 服务器、TFTP 服务器详解及测试
文章目录 前言一、SSH 服务器1、SSH 能做什么?2、安装 SSH 服务器3、测试 SSH 服务4、用 SecureCRT 测试 二、NFS 服务器1、NFS 能做什么?2、安装 NFS 软件包3、添加 NFS 共享目录4、启动 NFS 服务5、测试 NFS 服务器 三、TFTP 服务器1、TFTP 能做什么&a…...
1.3 HBase 基本架构
架构角色: 1)Master 实现类为 HMaster,负责监控集群中所有的 RegionServer 实例。主要作用如下: (1)管理元数据表格 hbase:meta,接收用户对表格创建修改删除的命令并执行 (2&#x…...
微机作业题
答案做的,正确性不保证。 1. 微型计算机的性能主要取决( A )的性能。 A. CPU B. 显示器 C. 硬盘 D. U盘 2. 计算机的工作过程,本质是( A )的过程。 A. 进行科学计算 …...
本地部署开源大模型聊天界面Serge:零成本私有化AI助手实战指南
1. 项目概述:一个能在本地运行的开源大语言模型聊天界面如果你和我一样,对大型语言模型(LLM)充满好奇,既想体验它们强大的对话和推理能力,又对数据隐私、网络依赖和API调用成本心存顾虑,那么ser…...
Next.js全栈开发模板:PostgreSQL+NextAuth+Tailwind一站式解决方案
1. 项目概述:一个现代化的全栈开发起点如果你最近在寻找一个能快速启动全栈Web应用开发的模板,那么由Vercel官方维护的这个“Next.js Postgres NextAuth Tailwind CSS”模板,很可能就是你一直在找的那个“瑞士军刀”。这不仅仅是一个简单的…...
OpenCrab:面向中文开发者的开源项目导航与协作平台架构实践
1. 项目概述:一个面向中文开发者的开源螃蟹?第一次在GitHub上看到opencrab-cn/opencrab这个仓库名时,我愣了一下。OpenCrab?开源螃蟹?这名字听起来既有趣又让人摸不着头脑。点进去一看,发现这并非一个关于海…...
PT助手Plus终极指南:3步实现浏览器PT下载自动化
PT助手Plus终极指南:3步实现浏览器PT下载自动化 【免费下载链接】PT-Plugin-Plus PT 助手 Plus,为 Microsoft Edge、Google Chrome、Firefox 浏览器插件(Web Extensions),主要用于辅助下载 PT 站的种子。 项目地址: …...
AI赋能图像分割:跨界应用的未来
自然图像域自适应分割是一种技术,通过强化不同数据集(域)的图像样本的边界(boundary)和不确定区域(entropy)特征的一致性,以实现更好的域自适应的分割结果。自然图像域自适应分割技术…...
羽毛球正反手抽球
文章目录 引言 I 正手抽球 II 反手抽球 1. 准备与步法 2. 握拍与引拍 3. 挥拍与击球 4. 随挥与回动 引言 羽毛球正手抽球和反手抽球是两项重要的中前场技术。正手抽球强调侧身架拍、腰部转体带动发力,击球点保持在身体前方半米处,利用小臂内旋和食指挤压拍柄发力。反手抽球则…...
南京数字化申报实战开启:提交材料后,如何确保您的技术底座不被“合规性审计”一票否决?
【行动指南:从填报到过审】截至 2026年5月12日,南京市中小企业数字化转型城市试点的线上申报通道已正式运行。在首批提交材料的企业反馈中,一个核心细节引起了市场的高度关注:申报系统不仅要求填写投入金额,更强化了对…...
搞懂这6个核心问题,程序员转智能体开发少走3年弯路
文章目录前言问题一:我只会写CRUD,真的能转智能体开发吗?问题二:转智能体开发,到底需要学哪些技术?2.1 基础层:Python 提示词工程2.2 核心层:RAG 工具调用 记忆管理2.3 进阶层&am…...
植物大战僵尸95版下载2026最新版及与原本区别介绍
一、游戏版本简介 植物大战僵尸95版是基于官方原版修改优化的经典改版,也是国内玩家知名度最高、流传最广的怀旧改版之一。该版本保留原版全部关卡、场景、背景音乐以及基础玩法,没有大幅度颠覆原作设定,仅对植物属性、僵尸数值、判定机制进…...
基于Nuxt 4与Shadcn/ui的现代化全栈仪表板模板开发指南
1. 项目概述:一个现代化的全栈仪表板起点如果你正在寻找一个能快速启动企业级后台管理、数据可视化或内容管理系统的技术栈,那么你很可能已经厌倦了从零开始配置的繁琐。每次新项目,都要重新折腾 Nuxt 的配置、UI 组件库的集成、样式工具链、…...
