[发明专利]一种内存分配管理方法及系统在审
申请号: | 201510824722.3 | 申请日: | 2015-11-24 |
公开(公告)号: | CN105302737A | 公开(公告)日: | 2016-02-03 |
发明(设计)人: | 刘树亮 | 申请(专利权)人: | 浪潮(北京)电子信息产业有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 罗满 |
地址: | 100085 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 分配 管理 方法 系统 | ||
技术领域
本发明涉及计算机内存管理技术领域,特别是涉及一种内存分配管理方法及系统。
背景技术
众所周知,在应用程序的运行过程中,通常需要在其需要内存的时候为其分配内存,具体地,内存分配是指在程序执行的过程中分配或者回收存储空间的分配内存的方法。常见的内存分配方法有静态内存分配和动态内存分配两种。所谓动态内存分配(DynamicMemoryAllocation)就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。
然而,在实际应用中,对于上述两种内存分配方式,当内存分配管理系统在应用程序运行过程中要频繁的申请和释放内存,现有技术通过系统调用来分配和释放内存的方式容易出现内存碎片,进而导致内存利用率低,如果长期运行会导致系统不稳定,并且运行时间越长,系统越容易出现问题,甚至会越来越慢。
发明内容
有鉴于此,本发明提供了一种内存分配管理方法及系统,以合理管理内存分配过程中产生的内存碎片,进而提高内存利用率。
为解决上述技术问题,本发明提供一种内存分配管理方法,包括:
接收来自应用程序的携带所需内存大小的内存分配请求;
在针对所述应用程序的内存块链表集中,查找节点内存大小与所述所需内存大小相适应的内存块链表;
其中,与所述所需内存大小相适应的节点内存大小大于所述所需内存大小且与所述所需内存大小差值最小;所述内存块链表集包括至少一个内存块链表,所述内存块链表包括至少一个内存块节点且所述至少一个内存块节点中各内存块节点的节点内存大小相等;
在查找到的内存块链表中,当其节点内存相较所需内存的剩余内存的大小不低于预设节点内存下限值时,将其中一内存块节点的内存中与所述所需内存大小相等的内存分配给所述应用程序,并将所述剩余内存归入目的内存块链表;
其中,所述目的内存块链表的节点内存大小与所述剩余内存的大小相等。
上述方法中,优选的,在所述将其中一内存块节点的内存中与所述所需内存大小相等的内存分配给所述应用程序,并将所述剩余内存归入目的内存块链表之后,还包括:
当检测到所述应用程序的释放内存时,将所述释放内存归入节点内存大小与其相等的内存块链表。
上述方法中,优选的,在所述查找节点内存大小与所述所需内存大小相适应的内存块链表之后,还包括:
在所述查找到的内存块链表中,当其节点内存相较所述所需内存的剩余内存的大小低于所述节点内存下限值时,将其中一内存块节点的内存都分配给所述应用程序。
上述方法中,优选的,所述内存块链表中各内存块节点按其内存地址线性排序,且各所述内存块节点之间的内存地址离散;
在将所述剩余内存归入所述目的内存块链表之后,当所述剩余内存的内存地址与所述目的内存块链表中某个内存块节点的内存地址连续时,还包括:
合并所述剩余内存和与其内存地址连续的内存块节点;
将合并得到的内存块节点归入节点内存大小与之内存大小相等的内存块链表。
上述方法中,优选的,所述查找节点内存大小与所述所需内存大小相适应的内存块链表,包括:
在表头链表中,查找所述节点内存大小与所述所需内存大小相适应的内存块链表标识;其中,所述表头链表包括所述内存块链表标识和与所述内存块链表标识相对应的内存块链表的节点内存大小;
将查找到的内存块链表标识,确定所述节点内存大小与所述所需内存大小相适应的内存块链表。
本发明还提供了一种内存分配管理系统,包括:
接收单元,用于接收来自应用程序的携带所需内存大小的内存分配请求;
查找单元,用于在针对所述应用程序的内存块链表集中,查找节点内存大小与所述所需内存大小相适应的内存块链表;
其中,与所述所需内存大小相适应的节点内存大小大于所述所需内存大小且与所述所需内存大小差值最小;所述内存块链表集包括至少一个内存块链表,所述内存块链表包括至少一个内存块节点且所述至少一个内存块节点中各内存块节点的节点内存大小相等;
分配单元,用于在查找到的内存块链表中,当其节点内存相较所需内存的剩余内存的大小不低于预设节点内存下限值时,将其中一内存块节点的内存中与所述所需内存大小相等的内存分配给所述应用程序,并将所述剩余内存归入目的内存块链表;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮(北京)电子信息产业有限公司,未经浪潮(北京)电子信息产业有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510824722.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种内存管理方法和装置
- 下一篇:一种面向复用软件的测试模型的设计方法