[发明专利]一种计算机内存管理方法、装置、设备及存储介质有效
申请号: | 202110626279.4 | 申请日: | 2021-06-04 |
公开(公告)号: | CN113268349B | 公开(公告)日: | 2022-02-18 |
发明(设计)人: | 李燕 | 申请(专利权)人: | 科东(广州)软件科技有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京华夏正合知识产权代理事务所(普通合伙) 11017 | 代理人: | 韩登营 |
地址: | 510530 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 计算机 内存 管理 方法 装置 设备 存储 介质 | ||
1.一种计算机内存管理方法,其特征在于,包括:
配置系统堆各类型的内存管理链表,每种类型的内存管理链表包括若干梯级的相应类型的内存梯级链表,内存梯级链表的梯级越高,其存放的空闲内存块越大,所述内存管理链表的类型包括内核字节堆、用户字节堆和页堆,其中,页堆内存梯级链表的最小梯级大于内核字节堆内存梯级链表的最大梯级或用户字节堆内存梯级链表的最大梯级,内核字节堆用于计算机内核的内存分配和释放,用户字节堆用于用户程序的内存分配和释放,页堆既用于计算机内核的内存分配和释放,还用于用户程序的内存分配和释放;
根据调用的系统堆接口的类型和所需内存大小,从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方;
基于系统堆使用方的类型和所释放内存大小把所释放内存加入到相应类型的内存管理链表的梯级匹配的内存梯级链表中。
2.根据权利要求1所述方法,其特征在于,所述根据调用的系统堆接口的类型和所需内存大小,从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方,包括:
根据调用的系统堆接口的类型确定相应类型的内存梯级链表,并从中基于所需内存大小确定对应梯级的内存梯级链表;
从所述对应梯级的内存梯级链表开始,基于梯级递增方向在相应类型的内存管理链表中查找满足需求的第一空闲内存块;
基于所需内存大小,从第一空闲内存块中选择第二空闲内存块分配给系统堆调用方,第二空闲内存块为与所需内存大小梯级匹配的内存块,当调用的系统堆接口类型为内核字节堆分配接口时,所分配的第二空闲内存块为与所需内存大小匹配的内存块,不包括堆管理数据结构。
3.根据权利要求2所述方法,其特征在于,所述根据调用的系统堆接口的类型和所需内存大小,从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方,还包括:
分配完第二空闲内存块后,当第一空闲内存块中还存在剩余内存块时,基于所述剩余内存块的空间大小,把所述剩余内存块加入到梯级匹配的对应类型的内存梯级链表里。
4.根据权利要求1所述方法,其特征在于,还包括:
把内核字节堆内存管理链表中物理地址相邻的空闲内存块进行归并,把归并后的空闲内存块存入到梯级匹配的内核字节堆内存管理链表或页堆内存管理链表中;
把页堆内存管理链表中物理地址相邻空闲的内存块进行归并,把归并后的空闲内存块存入到梯级匹配的页堆内存管理链表中。
5.根据权利要求2或3所述方法,其特征在于,当调用的系统堆接口类型为用户字节堆分配接口时,所述根据调用的系统堆接口的类型和所需内存大小,从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方,还包括:
所需内存大小包括堆管理数据结构的空间大小和用户程序需求内存大小;
在第二空闲内存块的起始地址存入所述堆管理数据结构;其中,所述堆管理数据结构至少包括第二空闲内存块的大小和起始地址。
6.根据权利要求1所述方法,其特征在于,对于系统堆使用方为用户程序的场景,所述把所释放内存加入到梯级匹配的所述内存梯级链表中包括:
获取从所释放内存的堆管理数据结构,确定所释放内存的大小和地址;
当所释放内存大于用户字节内存梯级链表的对应的最大内存块时,把所释放内存加到梯级匹配的页堆内存梯级链表中;
当所释放内存小于或等于用户字节内存梯级链表的对应的最大内存块时,基于所释放内存的地址和大小把所释放内存加到梯级匹配的内存梯级链表里。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于科东(广州)软件科技有限公司,未经科东(广州)软件科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110626279.4/1.html,转载请声明来源钻瓜专利网。