[发明专利]一种内存管理方法和系统有效
申请号: | 201110377934.3 | 申请日: | 2011-11-24 |
公开(公告)号: | CN103136104A | 公开(公告)日: | 2013-06-05 |
发明(设计)人: | 伍正勇 | 申请(专利权)人: | 深圳市快播科技有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 深圳市顺天达专利商标代理有限公司 44217 | 代理人: | 李琴;高瑞 |
地址: | 518057 广东省深圳市南山区高新*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 管理 方法 系统 | ||
技术领域
本发明涉及计算机领域,尤其涉及一种内存管理方法和系统。
背景技术
系统在运行中需要频繁的申请和释放内存,现有技术一般通过系统命令调用来分配和释放内存,但这样容易出现内存碎片,内存利用率低,长期运行会导致系统不稳定,并且运行时间越长,系统就越容易出现问题,甚至越来越慢。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述容易出现内存碎片、内存利用率低、系统不稳定的缺陷,提供一种不易出现碎片、内存利用率高、系统稳定的内存管理方法。
本发明解决其技术问题所采用的技术方案是:构造一种内存管理方法,包括:
S11.根据用户需求在可用的内存块中设定待分配的内存单元的大小及确定需分配的内存单元的总数n,并将n个内存单元的索引号依次设为0~n-1;
S12.在初始化时,将所述n个内存单元分别所对应的索引号、所述n个内存单元的首地址、内存单元的总数n、空闲的内存单元的数量分别进行保存,并将0赋值给第一个空闲的内存单元的索引号,将n-1赋值给最后一个空闲的内存单元的索引号;
S13.在接收到内存分配请求后,从所述n个内存单元中分配空闲可用的内存单元给用户。
在本发明所述的内存管理方法中,所述步骤S13包括:
S131.接收内存分配请求;
S132.判断内存块中是否有空闲的内存单元,若是,则进行步骤S133;若否,则结束;
S133.判断空闲的内存单元的大小是否与用户需要匹配,若是,则进行步骤S134;若否,则结束;
S134.判断空闲的内存单元的数量是否等于1,若是,则执行S136;若否,则进行步骤S135;
S135.将第一个空闲的内存单元分配出去,同时清除已分配的内存单元的索引号,并将空闲的内存单元的数量递减1,且将下一个空闲的内存单元的索引号赋值给第一个空闲的内存单元的索引号;
S136.将第一个空闲的内存单元分配出去,同时清除已分配的内存单元的索引号,并将空闲的内存单元的数量递减1,且将结束标记分别赋值给第一个空闲的内存单元的索引号和最后一个空闲的内存单元的索引号。
在本发明所述的内存管理方法中,在所述步骤S13之后,还包括:
S14.在接收到内存释放请求后,依次将所分配的内存单元进行回收。
在本发明所述的内存管理方法中,在所述步骤S14中,将所分配的内存单元进行回收的步骤包括:
S141.根据所释放的内存单元的首地址计算所释放的内存单元的索引号;
S142.判断空闲的内存单元的数量是否为0,若是,则进行步骤S143;若否,则进行步骤S144;
S143.将所计算的索引号分别赋值给第一个空闲的内存单元的索引号和最后一个空闲的内存单元的索引号,并将空闲的内存单元的数量递增1,且将第一个空闲的内存单元的索引号和最后第一个空闲的内存单元的索引号分别进行保存;
S144.将所计算的索引号赋值为最后一个空闲的内存单元的索引号,并将空闲的内存单元的数量递增1,且将最后第一个空闲的内存单元的索引号进行保存。
本发明还构造一种内存管理系统,包括:
设定模块,用于根据用户需求在可用的内存块中设定待分配的内存单元的大小及确定需分配的内存单元的总数n,并将n个内存单元的索引号依次设为0~n-1;
初始化模块,用于在初始化时,将所述n个内存单元分别所对应的索引号、所述n个内存单元的首地址、内存单元的总数n、空闲的内存单元的数量分别进行保存,并将0赋值给第一个空闲的内存单元的索引号,将n-1赋值给最后一个空闲的内存单元的索引号;
分配模块,用于在接收到内存分配请求后,从所述n个内存单元中分配空闲可用的内存单元给用户。
在本发明所述的内存管理系统中,所述分配模块包括:
请求接收子模块,用于接收内存分配请求;
第一判断子模块,用于判断内存块中是否有空闲的内存单元;
第二判断子模块,用于在内存块中有空闲的内存单元时,判断空闲的内存单元的大小是否与用户需要匹配;
第三判断子模块,用于在空闲的内存单元的大小与用户需要匹配时,判断空闲的内存单元的数量是否等于1;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市快播科技有限公司,未经深圳市快播科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110377934.3/2.html,转载请声明来源钻瓜专利网。