[发明专利]一种内存分配和释放的方法、装置及系统有效
申请号: | 201210407481.9 | 申请日: | 2012-10-23 |
公开(公告)号: | CN102968378A | 公开(公告)日: | 2013-03-13 |
发明(设计)人: | 熊剑 | 申请(专利权)人: | 深圳市融创天下科技股份有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 马晓亚 |
地址: | 518057 广东省深圳市南山区科*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 分配 释放 方法 装置 系统 | ||
技术领域
本发明涉及内存管理技术领域,尤其涉及一种基于固定内存分配量的内存分配和释放的方法、装置及系统。
背景技术
在现有的系统测试中,经常发现系统经过长时间运行后,内存占用率越来越高,甚至出现内存分配失败的情况,最终导致程序崩溃。这种情况的发生,一般是由内存碎片导致的。
内存碎片是一个非常麻烦的问题。即使在一个系统中事实上仍然有许多空闲内存时,内存碎片还会最终导致出现内存用完的情况,一个不断产生内存碎片的系统,不管产生的内存碎片多么小,只要时间足够长,就会将内存用完。这种情况在许多嵌入式系统中,特别是在高可用性系统中是不可接受的。有些软件环境,如OSE实时操作系统已经备有避免内存碎片的良好工具,但个别程序员做出的选择仍然会对最终结果形成影响。
内存碎片描述的是所有不可用的空闲内存,这些资源之所以不能被使用,是因为分配内存的机制使这些内存无法使用。这一问题通常都会发生,原因在于空闲内存以小而不连续的方式出现在不同的位置。如何分配内存决定着内存碎片是否会、何时会成为一个问题,为了解决通用系统内存碎片的问题,现提出一种基于固定内存分配量的内存分配和释放的方法、装置及系统。
发明内容
本发明所要解决的技术问题在于提供一种基于固定内存分配量的内存分配和释放的方法、装置及系统,以解决现有技术中频繁产生内存碎片以及内存分配和释放过程中扩展性差的技术问题。
为达到上述目的,本发明是通过以下技术方案来实现的,
一种内存分配方法,包括:
请求分配至少两个预置了固定内存分配量的内存堆区;
获取内存分配请求;
判断所述内存分配请求所请求分配内存的长度是否超过所述内存堆区中固定内存分配量的最大值;
如否,则根据所述长度和预置的等差系数哈希到与所述内存分配请求匹配的内存堆区,从所述匹配的内存堆区分配内存;如是,则从操作系统剩余内存空间分配内存。
一种内存释放方法,包括:
获取内存释放请求;
判断所述内存释放请求所需要释放内存的长度是否超过所述内存堆区中预置的固定内存分配量的最大值,
如否,则根据所述长度获取序列标号,根据所述序列标号获取回收链表指针,并将所述内存释放请求对应的内存块添加到所述回收链表指针所指向的回收链表的链尾;如是,则从操作系统剩余内存空间释放内存。
一种内存分配装置,所述装置包括预置堆区模块、第一请求模块、第一判断模块、堆区分配模块和系统分配模块;
所述预置堆区模块,与所述第一请求模块相连,用于请求分配至少两个预置了固定内存分配量的内存堆区;
所述第一请求模块,与所述预置堆区模块和第一判断模块相连,用于获取内存分配请求;
所述第一判断模块,与所述第一请求模块、堆区分配模块和系统分配模块相连,用于判断所述内存分配请求所需分配内存的长度是否超过所述内存堆区中固定内存分配量的最大值,如否,则发送堆区分配指令到所述堆区分配模块;如是,则发送系统分配指令到所述系统分配模块;
所述堆区分配模块,与所述第一判断模块相连,用于接收所述第一判断模块发送的堆区分配指令,并根据所述长度和预置的等差系数哈希到与所述内存分配请求匹配的内存堆区,从所述匹配的内存堆区分配内存;
所述系统分配模块,与所述第一判断模块相连,用于接收所述第一判断模块发送的系统分配指令,并从操作系统剩余内存空间分配内存。
一种内存释放装置,所述装置包括第二请求模块、第二判断模块、获取标号模块、更新链表模块和系统释放模块;
所述第二请求模块,与所述第二判断模块相连,用于获取内存释放请求;
所述第二判断模块,与所述第二请求模块、获取标号模块和系统释放模块相连,用于判断所述内存释放请求所请求释放内存长度是否超过所述内存堆区中预置的固定内存分配量的最大值,如否,则发送获取标号指令到所述获取标号模块,如是,则发送系统释放指令到所述系统释放模块;
所述获取标号模块,与所述第二判断模块和更新链表模块相连,用于接收所述第二判断模块发送的获取标号指令,根据所述长度获取序列标号;
所述更新链表模块,与所述获取标号模块相连,用于根据所述序列标号获取回收链表指针,并将所述内存释放请求对应的内存块添加到所述回收链表指针所指向的回收链表的链尾;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市融创天下科技股份有限公司,未经深圳市融创天下科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210407481.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用于加热炉水冷管的包扎结构
- 下一篇:一种烧结盘