单位还能建设网站吗,哪里做网站域名不用备案,网站的数据库怎么做,做暧暖ox免费视频网站目录 PoolSubPage.allocategetNextAvail方法toHandle方法removeFromPool方法 PoolSubPage.allocate
上一篇我们介绍了PoolSubPage的简单知识#xff0c;当我们需要PoolSubPage的内存时可调用allocate方法查找可分配二进制的位置#xff0c;具体的源码过程如下#xff1a; … 目录 PoolSubPage.allocategetNextAvail方法toHandle方法removeFromPool方法 PoolSubPage.allocate
上一篇我们介绍了PoolSubPage的简单知识当我们需要PoolSubPage的内存时可调用allocate方法查找可分配二进制的位置具体的源码过程如下
从源码中我们可以看到具体的主要有三步
获取可分配的段的位置如果subPage已经分配满了则将其从pool中移除将得到的bitmapIdx转成handle并返回
下面我们具体分析这三步。
getNextAvail方法
获取下一个可分配的段的位置
这里说下返回的位置int
通过上一篇我们知道bitmap数组最多为8那么findNextAvail方法中的baseVal最大为7*2的6次方7(111)占三个位置左移6个位置后int的7~9位用于记录所申请的段在bitmap数组中的第几个元素int的0~6位用于记录在long型二进制中的第几位
toHandle方法
将获得的bitmapIdx转成handle指针
handler其实是一个long型整数它是一个指针代表了段的位置的相关信息long型有64位每一个位代表的意义如下 removeFromPool方法 至此PoolSubPage的内存分配就分析到此。