当前位置: 首页 > 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的内存分配就分析到此。

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

相关文章:

  • 【目标检测论文阅读笔记】Reducing Label Noise in Anchor-Free Object Detection
  • 金融数字新型基础设施创新开放联合体今日成立
  • 编程语言的发展史
  • 巧用千寻位置GNSS软件|点测量采集技巧
  • DHCP原理与配置
  • 软件测试今天你被内卷了吗?
  • 做完自动化测试,但别让不会汇报毁了你...
  • 企业级信息系统开发讲课笔记2.4 利用MyBatis实现条件查询
  • 【天梯赛—不想坑队友系列】L2-003 月饼(java)
  • 电磁兼容(EMC)的标准与测试内容
  • 滑动平均算法
  • 个人职业发展
  • 剑指 Offer 51. 数组中的逆序对
  • 数字化转型迫在眉睫!药企如何应用AI技术加速创新?
  • 电脑显示屏是怎么显示出图像的?CPU与GPU又是什么关系?
  • 报名截至在即 | “泰迪杯”挑战赛最后一场赛前指导直播!
  • 经验分享:如何有效应对Facebook广告数据波动问题?
  • 【Python】逆向解析js代码
  • websorm启动vue项目修改内容后自动运行内存溢出
  • 第05章_数组
  • Spring Security --- 快速入门
  • 程序员挣够了钱,到中年失业真的很可怕吗?
  • 【Log and Dump Summary】
  • 软考证书找工作有用吗?软考找工作用处大吗
  • JavaWeb之谈论项目编码规范_Java版
  • Map排序
  • mycat读写分离
  • [Linux]环境变量
  • 次优二叉查找树(次优查找树)_递归和非递归实现_20230414
  • 贯穿设计模式第八话--设计原则总结篇