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

news2024/9/28 21:23:15

目录

    • 释放空间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.coloradmin.cn/o/486417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营(总结)|动态规划总结篇

一、动态规划五部曲 确定dp及其下标的含义确定递推关系式初始化值确定遍历顺序验证 二、01背包问题 1. 基本理解 理解:所谓的01背包问题,其关键在于物品只能放入1次,不能够重复利用,因此称呼为01背包问题。与完全背包的区别在…

【深度学习】计算机视觉(十)——Faster RCNN(实践篇)

文章目录 写在最前面 step1:相关说明step2:Prerequisites安装要求tensorflow-gpu1. 安装和测试2. 错误提示① numpy版本② tensorflow版本③TensorRT step3:Installation1. Update your -arch2. Install the Python COCO API3. setup VOC4. D…

【VM服务管家】VM4.2平台SDK_6.4 结果获取类

目录 2.4.1 数据结果:通过流程输出或者模块输出获取数据结果的方法2.4.2 流程回调:某个流程运行开始与结束的回调方法 2.4.1 数据结果:通过流程输出或者模块输出获取数据结果的方法 描述 环境:VM4.2 VS2013及以上 现象&#xff…

从不自量力到 AI 助力,我如何翻译完一整本英文书

披露和声明: 本文提及的翻译作品系使用 AI 技术制作,并经人工调整,具体步骤如文中所述。本文在后期修改过程中使用 ChatGPT 辅助,目的为精简原版中的口语化表述。我的英文水平有限,翻译这本书主要是为了自我学习&…

自动驾驶— Planning - Udacity Self-Driving Car Engineer

第六讲规划 6.1规划简介 在规划中,我们结合了高清地图、定位和预测来构建车辆的轨迹。规划的第一步是路线导航,重点是如何在地图上从A到B。路由以地图数据作为输入,并输出可导航路径。手机上的导航系统就是路线规划的一个例子。在Apollo中&…

高性能——零拷贝

目录 背景 零拷贝定义 传统I/O执行流程 背景 零拷贝算是一个老生常谈的问题啦,很多顶级框架都用到了零拷贝来提升性能,比如我们经常接触到的Kafka 、RocketMQ、Netty 。 零拷贝定义 “拷贝”:就是指数据从一个存储区域转移到另一个存储区域.“零”…

games103——作业2

实验二主要使用隐式积分法以及PBD法完成布料仿真 完整项目已上传至github。 文章目录 基于物理的方法弹簧系统单个弹簧多个弹簧弹簧网络结构化弹簧网络(Structured Spring Networks)非结构化弹簧网络(Unstructured Spring Networks)三角网格表示 代码 求解质量弹簧系统的显示积…

UG NX二次开发(C++)-用UF_OBJ_cycle_objs_in_part遍历对象

文章目录 1、前言2、在UG NX中创建多个体3、创建UF_OBJ_cycle_objs_in_part的使用函数3.1 首先声明函数:3.2定义函数代码3.3 函数调用代码3.4 测试结果 1、前言 UG NX二次开发中,比如体、面、边等,在NXOpen中可以通过Collection来实现&#…

华硕ROG|玩家国度冰刃6双屏GX650RX Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原

华硕ROG|玩家国度 冰刃6双屏 GX650RX Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原 文件地址:https://pan.baidu.com/s/1snKOsH3OMl3GZLqeAf-GLA?pwd8888 华硕工厂恢复系统 ,安装结束后带隐藏分区以及机器所有驱动软件 需准备一个…

【告警通知】Java项目统一异常捕获处理【钉钉告警推送消息】

基础描述 在实际业务中,很多时候都是被动获取系统业务异常,如通过业务部门或者通过客户反馈说某个功能不行时,这样显得系统很被动和呆板在SpringBoot中有统一异常处理可以来实现,当我们检测到非业务异常时,比如空指针…

《SpringBoot中间件设计与实战》第2章 服务治理,超时熔断

需求背景 在流量较大的场景下,举个例子,用户在电商平台下单后开始跳转到在线收银台进行支付。由于支付渠道和网络环境随时都有可能发生问题,那么你该怎么保证支付系统的可靠性呢? 保证支付系统的可靠性需要考虑的点非常多,但这里有一个最直接和重点的内容就支付响应时长…

【王道·计算机网络】第三章 数据链路层【未完】

一、功能 研究思想:水平方向个数据链路层的差距 1.1 数据链路层基本概念 结点:主机、路由器链路:网络中两个节点之间的物理通道,传输介质包含:双绞线、光纤、微波。分为:有线链路、无线链路数据链路&…

TIM输入不捕获-STM32

TIM输入不捕获-STM32 IC(Input Capture) 输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器和通用定时器都拥有4个输入…

【Linux】进程学习(2)---理解进程操作

文章目录 查看进程通过系统目录查看通过ps命令查看 通过系统调用获取进程标识符通过系统调用创建进程初识fork函数fork函数的返回值 进程状态阻塞与运行状态Linux内核源码中的进程状态运行状态-R浅度睡眠状态-S深度睡眠状态-D暂停状态-T僵尸状态-Z死亡状态-X 查看进程 通过系统…

操作系统引导(开机过程)

操作系统安装在C盘中,其一步步启动的过程如下: 操作系统要启动,操作系统的数据需要先被放入主存里。 如图所示,计算机的主存由RAM和ROM组成,ROM芯片被集成在电脑主板上,里面存储的是BIOS(Basic…

【组合数学算贡献+枚举】CF816div2 C. Monoblock

题解都看了半天才懂 Problem - C - Codeforces 题意: 思路: 一开始的思路是这样的: 只能说,想到了更换枚举对象,然后组合数学算贡献 也想到了修改操作与(a[i]和a[i-1])有关 但是我想的是枚…

在Linux上搭建gitlab以及自动化编译部署的完整流程

一、安装gitlab 首先下载gitlab的安装包,地址如下: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/bionic/main/g/gitlab-ce/ 然后安装下载的包即可,一般还需要安装openssh-server等依赖包,在安装gitlab包之前可以…

【MongoDB】二、MongoDB数据库的基本操作

【MongoDB】二、MongoDB数据库的基本操作 实验目的实验内容任务一:(1)创建数据库newdb(2)在数据库newdb中创建集合mycollection(3)在集合mycollection中插入以下数据:(4&…

如何安装 Auto GPT 4:分步指南

动动发财的小手,点个赞吧! 您对尝试最新最好的文本生成技术感到兴奋吗? Auto GPT 4 因其令人印象深刻的功能而广为人知,但启动和运行它似乎令人望而生畏。幸运的是,我们在这里[1]提供安装 Auto GPT 4 的分步指南。 1. …

快手sig3 48位-unidbg

研究某手app的小伙伴都了解sig3有两个版本,低版本的是42位,高版本的48位。 废话不多说,先抓个包: 上一个当前最新版本的48位sig3,我们以搜索接口为例,效果如图: 在上面可以看到使用unidbg的方式…