[发明专利]内存空间管理方法及系统有效
| 申请号: | 201410289697.9 | 申请日: | 2014-06-24 |
| 公开(公告)号: | CN104021087B | 公开(公告)日: | 2018-07-17 |
| 发明(设计)人: | 唐黄平;卢茂强 | 申请(专利权)人: | 上海众源网络有限公司 |
| 主分类号: | G06F12/02 | 分类号: | G06F12/02;G06F12/06 |
| 代理公司: | 北京柏杉松知识产权代理事务所(普通合伙) 11413 | 代理人: | 马敬;项京 |
| 地址: | 201103 上*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 函数变量 空闲区间 内存块 分配 内存空间管理 内存空间 使用效率 内存 合适函数 回收 | ||
本发明实施例提供的一种内存空间管理方法及系统,可以将在回收栈外的内存中查找到的空闲区间分配给函数变量,因此无需再从回收栈中获得内存块,降低了分配内存块的频率。同时,由于本发明分配的空闲区间是内存块中未被其他函数变量使用的部分,因此本发明还可以有效提高内存空间的使用效率。由于本发明将与函数变量所需的内存空间的大小相同的部分分配给该函数变量,因此未被函数变量使用的部分仍可作为空闲区间供其他函数变量使用。而且,本发明将最合适函数变量的空闲区间分配给函数变量,进一步提高了内存的使用效率。
技术领域
本发明涉及内存管理技术领域,特别是涉及一种内存空间管理方法及系统。
背景技术
内存(Memory)也被称为内存储器,是计算机中重要的部件之一。内存用于暂时存放CPU中的运算数据以及与硬盘等外部存储器交换的数据。计算机中所有程序的都是在内存中运行的,因此内存的性能对计算机的影响非常大。
栈是一块连续的内存的区域,内存控制器可以为函数变量分配栈中的内存块,栈也可以将未使用的内存块进行回收,因此栈也称为回收栈。现有的内存管理方案为每一个函数变量均分配内存块,导致内存控制器需要频繁的进行内存块分配。
发明内容
本发明实施例的目的在于提供一种内存空间管理方法及系统,以实现降低分配内存块频率的目的。
为达到上述目的,本发明实施例公开了一种内存空间管理方法,包括:
确定函数变量所需的内存空间大小;
在回收栈外的内存中查找空间大小大于所述所需的内存空间的空闲区间,如果查找到,则将查找结果中的空间最小的空闲区间中的第一部分空间分配给所述函数变量,其中,所述第一部分空间的大小与所述函数变量所需的内存空间的大小相同。
优选地,在将查找结果中的空间最小的空闲区间中的第一部分空间分配给所述函数变量后,还包括:
将查找结果中的空间最小的空闲区间中除所述第一部分空间外的剩余空间标记为空闲区间。
优选地,还包括:
将函数变量释放的内存空间标记为空闲区间;
将连续排列的多个空闲区间合并为一个空闲区间。
优选地,还包括:
将空闲区间中的内存块放入回收栈中进行回收。
优选地,还包括:
判断回收栈中内存块的数量是否大于预设阈值,如果是,则不再回收内存块直至回收栈中内存块的数量不大于预设阈值,所述预设阈值为自然数。
优选地,在回收栈外的内存中未查找到空间大小大于所述所需的内存空间的空闲区间时,所述方法还包括:
根据如下公式确定需为所述函数变量分配的内存块的数量X:
X*A>Y>(X-1)*A
其中,A为内存块的大小,Y为所述函数变量所需的内存空间大小;
从回收栈中获得X个内存块并分配给所述函数变量。
一种内存空间管理系统,包括:空间确定单元、区间查找单元和区间分配单元,
所述空间确定单元,用于确定函数变量所需的内存空间大小;
所述区间查找单元,用于在回收栈外的内存中查找空间大小大于所述所需的内存空间的空闲区间,如果查找到,则触发所述区间分配单元;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海众源网络有限公司,未经上海众源网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410289697.9/2.html,转载请声明来源钻瓜专利网。





