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

《Netty》从零开始学netty源码(三十九)之PoolSubPage的内存分配

目录

  • PoolSubPage.allocate
    • getNextAvail方法
    • toHandle方法
    • removeFromPool方法

PoolSubPage.allocate

上一篇我们介绍了PoolSubPage的简单知识,当我们需要PoolSubPage的内存时可调用allocate方法查找可分配二进制的位置,具体的源码过程如下:
在这里插入图片描述

从源码中我们可以看到具体的主要有三步:

  1. 获取可分配的段的位置
  2. 如果subPage已经分配满了则将其从pool中移除
  3. 将得到的bitmapIdx转成handle并返回

下面我们具体分析这三步。

getNextAvail方法

获取下一个可分配的段的位置
在这里插入图片描述

这里说下返回的位置int

  1. 通过上一篇我们知道bitmap数组最多为8,那么findNextAvail方法中的baseVal最大为7*2的6次方,7(111)占三个位置,左移6个位置后,int的7~9位用于记录所申请的段在bitmap数组中的第几个元素
  2. int的0~6位用于记录在long型二进制中的第几位

toHandle方法

将获得的bitmapIdx转成handle指针
在这里插入图片描述

handler其实是一个long型整数,它是一个指针,代表了段的位置的相关信息,long型有64位,每一个位代表的意义如下:

在这里插入图片描述

removeFromPool方法

在这里插入图片描述

至此,PoolSubPage的内存分配就分析到此。

相关文章:

《Netty》从零开始学netty源码(三十九)之PoolSubPage的内存分配

目录 PoolSubPage.allocategetNextAvail方法toHandle方法removeFromPool方法 PoolSubPage.allocate 上一篇我们介绍了PoolSubPage的简单知识,当我们需要PoolSubPage的内存时可调用allocate方法查找可分配二进制的位置,具体的源码过程如下: …...

【目标检测论文阅读笔记】Reducing Label Noise in Anchor-Free Object Detection

(Augmentation for small object detection) Abstract 当前的 anchor-free无锚目标检测器 将空间上落在真值框预定义中心区域内的所有特征标记为正。这种方法会在训练过程中产生 标签噪声,因为这些 正标记的特征中的一些 可能位于背景或遮挡…...

金融数字新型基础设施创新开放联合体今日成立

4月18日,“金融数字新型基础设施创新开放联合体”(以下简称:联合体)在上海成立。联合体由上海银行、复旦大学金融科技研究院、中电金信共同发起,首批成员单位汇聚产业链与供给侧的中坚力量:国泰君安证券、太…...

编程语言的发展史

编程语言处在不断的发展和变化中,从最初的机器语言发展到如今的2500种以上的高级语言,每种语言都有其特定的用途和不同的发展轨迹。编程语言并不像人类自然语言发展变化一样的缓慢而又持久,其发展是相当快速的,这主要是计算机硬件…...

巧用千寻位置GNSS软件|点测量采集技巧

点测量是测量中重要的节点,在测量工作的信息处理分析中发挥着重要作用。本期将给各位带来使用千寻位置GNSS软件采集地形点、控制点、快速点、连续点、房角点和倾斜点的操作技巧。 地形点 地形点的设置如图 5.1-9所 示,每次采集一个点,该点需要…...

DHCP原理与配置

目录 一、DHCP工作原理 1)了解DHCP服务 使用DHCP的好处 DHCP的分配方式 2)DHCP的租约过程 分为四个步骤 二、DHCP服务器的配置 1)检查并且安装dhcp有关软件包 2)查看系统的配置文件,并且利用好官方给的参考案…...

软件测试今天你被内卷了吗?

认识一个人,大专学历非计算机专业的,是前几年环境好的时候入的行,那时候软件测试的要求真的很低,他那时好像是报了个班,然后入门的,但学的都是些基础,当时的他想的也简单,反正也能拿…...

做完自动化测试,但别让不会汇报毁了你...

pytest 是一个成熟的全功能Python测试工具,可以帮助您编写更好的程序。它与 python 自带的 unittest 测试框架类似,但 pytest 使用起来更简洁和高效,并且兼容 unittest 框架。pytest 能够支持简单的单元测试和复杂的功能测试,pyte…...

企业级信息系统开发讲课笔记2.4 利用MyBatis实现条件查询

文章目录 零、本节学习目标一、查询需求二、打开MyBatisDemo项目三、对学生表实现条件查询(一)创建学生映射器配置文件(二)配置学生映射器文件(三)创建学生映射器接口(四)测试学生映…...

【天梯赛—不想坑队友系列】L2-003 月饼(java)

目录 第一题: L2-003 月饼 输入格式: 输出格式: 输入样例: 输出样例: 题目分析 题目代码 第二题:德才论 输入格式: 输出格式: 输入样例: 输出样例&#xff…...

电磁兼容(EMC)的标准与测试内容

在国际范围上,电磁兼容标准的制定已经有了70多年的发展历程,最早为了保护无线电通信和广播,国际无线电干扰特别委员会(CISPR)对各种用电设备和系统提出了相关的电磁干扰发射限值和测量方法。到了20世纪60~7…...

滑动平均算法

class Solution { public static int[] maxSlidingWindow(int[] nums, int k) { int right 0; int[] res new int[nums.length -k 1]; int index0; LinkedList<Integer> list new LinkedList<>(); // 开始构造窗口 …...

个人职业发展

职业的本质就是人和社会的交换关系。选择什么职业&#xff0c;等于选择了用什么方式和世界交换。 比如&#xff0c;快递员、小时工靠“体力”&#xff1b;大多数打工者靠“体力智力”&#xff1b;网红靠“资源、平台”&#xff1b;各领域的大神、科学家、艺术家靠“天赋”。 这…...

剑指 Offer 51. 数组中的逆序对

剑指 Offer 51. 数组中的逆序对 难度&#xff1a;hard\color{red}{hard}hard 题目描述 在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组&#xff0c;求出这个数组中的逆序对的总数。 示例 1: 输入: [7…...

数字化转型迫在眉睫!药企如何应用AI技术加速创新?

导语 | 近年来&#xff0c;随着 AI 等技术的发展应用&#xff0c;数字化、智能化日渐成为各行各业转型升级的新兴力量&#xff0c;其与医药产业的融合创新也逐渐成为当前的新趋势&#xff0c;众多医药制造企业蓄势待发&#xff0c;搭乘数字化的快车&#xff0c;驶入高速发展的快…...

电脑显示屏是怎么显示出图像的?CPU与GPU又是什么关系?

文章目录电脑显示屏是怎么显示出图像的&#xff1f;CPU与GPU又是什么关系&#xff1f;显卡作用明明有了CPU为什么还要GPU?电脑显示屏是怎么显示出图像的&#xff1f;内存与显存所有运算都交给GPU处理可以吗&#xff1f;参考&#xff1a;电脑显示屏是怎么显示出图像的&#xff…...

报名截至在即 | “泰迪杯”挑战赛最后一场赛前指导直播!

为推广我国高校数据挖掘实践教学&#xff0c;培养学生数据挖掘的应用和创新能力&#xff0c;增加校企交流合作和信息共享&#xff0c;提升我国高校的教学质量和企业的竞争能力&#xff0c;第十一届“泰迪杯”数据挖掘挑战赛&#xff08;以下简称挑战赛&#xff09;已于2023年3月…...

经验分享:如何有效应对Facebook广告数据波动问题?

Facebook广告作为一种重要的数字营销工具&#xff0c;可以帮助企业和品牌快速获得目标受众的关注和转化。然而&#xff0c;由于广告投放过程的不稳定性&#xff0c;Facebook广告数据波动问题也经常出现。 对于广告主而言&#xff0c;如何应对Facebook广告数据波动问题&#xf…...

【Python】逆向解析js代码

目录 1. 打开百度翻译网页&#xff0c;查找翻译结果的网络资源包 2. 获取翻译结果网络资源包的url、请求头、请求体&#xff0c;解析json文件数据 3. 观察请求体字段&#xff0c;发现 query 字段便是我们输入的需要翻译的值 4. ctrl F 快捷键搜索sign值的网络资源包&#x…...

websorm启动vue项目修改内容后自动运行内存溢出

手动启动vue项目正常运行&#xff0c;修改部分内容保存后会自动重新run一下&#xff0c; 这个时候就报错内存溢出&#xff0c;然后很悲伤的需要再手动重启一下。 &#xff08;在网上查了好多方法就不单独加链接了&#xff09; 前3个方法都试过对于我的项目无效&#xff0c;第4…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...