[发明专利]一种内存分配办法在审
申请号: | 202111198865.X | 申请日: | 2021-10-14 |
公开(公告)号: | CN113946444A | 公开(公告)日: | 2022-01-18 |
发明(设计)人: | 张令;刘非;沈建春;黄俊斌 | 申请(专利权)人: | 杭州国芯科技股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 杭州君度专利代理事务所(特殊普通合伙) 33240 | 代理人: | 陈炜 |
地址: | 310012 浙江省杭州市文*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 分配 办法 | ||
1.一种内存分配办法,包括申请内存、释放内存、清除缓存,其特征在于,所述的申请内存为:
用户首次申请内存时,向操作系统申请内存块,同时生成一个数据块Malloc Package,并将申请内存块的指针*P保留在Malloc Package内;Malloc Package内包含有用户传入的本次申请标识符ID、申请内存块大小Size,以及Malloc Package自身的热度值Hot;将Malloc Package放入使用表Malloc;
用户再次申请内存块时,从空闲表Free内寻找ID和Size与本次申请相同的MallocPackage;如果找到,则将找到的Malloc Package返回用户使用,同时将Malloc Package由Free表移动到Malloc表;如果没有找到,则本次申请为首次申请;
所述的释放内存为:用户释放内存时,将Malloc Package由Malloc表移动到Free表;
所述的清除缓存为:用户申请内存时如果系统内存不足,按照热度值hot释放Free表中的Malloc Package到系统,优先释放热度值hot小的Malloc Package。
2.如权利要求1所述的一种内存分配办法,其特征在于,所述的申请内存步骤如下:
步骤(1)用户发送申请内存指令;
步骤(2)通过用户传入的ID和Size判断本次申请生成的数据块Malloc Package是否已经存在于Free表中:如果存在则执行步骤(3)~(7),如果不存在则执行步骤(8);
步骤(3)从Free表里获取存在的Malloc Package;
步骤(4)将获取的Malloc Package中的热度值Hot加1;
步骤(5)将获取的Malloc Package从Free表里移除;
步骤(6)将获取的Malloc Package添加到Malloc表;
步骤(7)将获取的Malloc Package返回给用户;
步骤(8)通过操作系统和用户传入的Size申请内存块;
步骤(9)判断从操作系统获取的指针*P是否为NULL:如果不是则执行步骤(10)~(13),如果是则执行步骤(14);
步骤(10)生成新的Malloc Package,并且将从操作系统获取的指针*P填充进新的Malloc Package;
步骤(11)生成新的ID,并且将新的ID填充到新的Malloc Package中;
步骤(12)将新的Malloc Package中的热度值Hot初始化为0;
步骤(13)将新的Malloc Package返回给用户;
步骤(14)判断Free表中是否还存在Malloc Package,如果存在则执行步骤(15),如果不存在则执行步骤(16);
步骤(15)从Free表中获取热度值Hot最小的Malloc Package进行释放,返回步骤(8);
步骤(16)返回用户错误信息。
3.如权利要求1所述的一种内存分配办法,其特征在于,所述的释放内存步骤如下:
步骤(1)用户发送释放内存指令,并且传入已经返回给用户的待释放内存对应的Malloc Package;
步骤(2)判断待释放内存对应的Malloc Package是否存在于Malloc表中:如果存在,执行步骤(3),否则返回用户错误信息;
步骤(3)从Malloc表中移除待释放内存对应的Malloc Package;
步骤(4)将待释放内存对应的Malloc Package添加到Free表中,释放过程结束。
4.如权利要求1所述的一种内存分配办法,其特征在于,所述的清除缓存步骤如下:
步骤(1)用户发送清除缓存指令;
步骤(2)判断Free表中是否存在Malloc Package:如果存在,执行步骤(3),否则表示清除缓存完毕;
步骤(3)获取Free表中的一个Malloc Package;
步骤(4)将获取的Malloc Package中的指针*P释放;
步骤(5)将获取的Malloc Package释放;继续执行步骤(2)。
5.如权利要求1所述的一种内存分配办法,其特征在于:在清除缓存中,允许用户调用清除缓存接口,将Free表中全部Malloc Package释放。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州国芯科技股份有限公司,未经杭州国芯科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111198865.X/1.html,转载请声明来源钻瓜专利网。