一种内存分配管理方法及系统技术方案

技术编号:12809361 阅读:51 留言:0更新日期:2016-02-05 08:33
本发明专利技术公开了一种内存分配管理方法及系统,该方法包括:接收来自应用程序的携带所需内存大小的内存分配请求;在针对应用程序的内存块链表集中,查找节点内存大小与所需内存大小相适应的内存块链表;在查找到的内存块链表中,当其节点内存相较所需内存的剩余内存的大小不低于预设节点内存下限值时,将其中一内存块节点的内存中与所需内存大小相等的内存分配给应用程序,并将剩余内存归入目的内存块链表。本发明专利技术通过将剩余内存归入节点内存大小与剩余内存的大小相等目的内存块链表中实现了合理管理在内存分配过程中产生的内存碎片,有效提高了内存利用率。

【技术实现步骤摘要】

本专利技术涉及计算机内存管理
,特别是涉及一种内存分配管理方法及系 统。
技术介绍
众所周知,在应用程序的运行过程中,通常需要在其需要内存的时候为其分配内 存,具体地,内存分配是指在程序执行的过程中分配或者回收存储空间的分配内存的方法。 常见的内存分配方法有静态内存分配和动态内存分配两种。所谓动态内存分配(Dynamic Memory Allocation)就是指在程序执行的过程中动态地分配或者回收存储空间的分配内 存的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是 由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。 然而,在实际应用中,对于上述两种内存分配方式,当内存分配管理系统在应用程 序运行过程中要频繁的申请和释放内存,现有技术通过系统调用来分配和释放内存的方式 容易出现内存碎片,进而导致内存利用率低,如果长期运行会导致系统不稳定,并且运行时 间越长,系统越容易出现问题,甚至会越来越慢。
技术实现思路
有鉴于此,本专利技术提供了一种内存分配管理方法及系统,以合理管理内存分配过 程中产生的内存碎片,进而提高内存利用率。 为解决上述技术问题,本专利技术提供一种内存分配管理方法,包括: 接收来自应用程序的携带所需内存大小的内存分配请求; 在针对所述应用程序的内存块链表集中,查找节点内存大小与所述所需内存大小 相适应的内存块链表; 其中,与所述所需内存大小相适应的节点内存大小大于所述所需内存大小且与所 述所需内存大小差值最小;所述内存块链表集包括至少一个内存块链表,所述内存块链表 包括至少一个内存块节点且所述至少一个内存块节点中各内存块节点的节点内存大小相 等; 在查找到的内存块链表中,当其节点内存相较所需内存的剩余内存的大小不低于 预设节点内存下限值时,将其中一内存块节点的内存中与所述所需内存大小相等的内存分 配给所述应用程序,并将所述剩余内存归入目的内存块链表; 其中,所述目的内存块链表的节点内存大小与所述剩余内存的大小相等。 上述方法中,优选的,在所述将其中一内存块节点的内存中与所述所需内存大小 相等的内存分配给所述应用程序,并将所述剩余内存归入目的内存块链表之后,还包括: 当检测到所述应用程序的释放内存时,将所述释放内存归入节点内存大小与其相 等的内存块链表。 上述方法中,优选的,在所述查找节点内存大小与所述所需内存大小相适应的内 存块链表之后,还包括: 在所述查找到的内存块链表中,当其节点内存相较所述所需内存的剩余内存的大 小低于所述节点内存下限值时,将其中一内存块节点的内存都分配给所述应用程序。 上述方法中,优选的,所述内存块链表中各内存块节点按其内存地址线性排序,且 各所述内存块节点之间的内存地址离散; 在将所述剩余内存归入所述目的内存块链表之后,当所述剩余内存的内存地址与 所述目的内存块链表中某个内存块节点的内存地址连续时,还包括: 合并所述剩余内存和与其内存地址连续的内存块节点; 将合并得到的内存块节点归入节点内存大小与之内存大小相等的内存块链表。 上述方法中,优选的,所述查找节点内存大小与所述所需内存大小相适应的内存 块链表,包括: 在表头链表中,查找所述节点内存大小与所述所需内存大小相适应的内存块链表 标识;其中,所述表头链表包括所述内存块链表标识和与所述内存块链表标识相对应的内 存块链表的节点内存大小; 将查找到的内存块链表标识,确定所述节点内存大小与所述所需内存大小相适应 的内存块链表。 本专利技术还提供了一种内存分配管理系统,包括: 接收单元,用于接收来自应用程序的携带所需内存大小的内存分配请求; 查找单元,用于在针对所述应用程序的内存块链表集中,查找节点内存大小与所 述所需内存大小相适应的内存块链表; 其中,与所述所需内存大小相适应的节点内存大小大于所述所需内存大小且与所 述所需内存大小差值最小;所述内存块链表集包括至少一个内存块链表,所述内存块链表 包括至少一个内存块节点且所述至少一个内存块节点中各内存块节点的节点内存大小相 等; 分配单元,用于在查找到的内存块链表中,当其节点内存相较所需内存的剩余内 存的大小不低于预设节点内存下限值时,将其中一内存块节点的内存中与所述所需内存大 小相等的内存分配给所述应用程序,并将所述剩余内存归入目的内存块链表; 其中,所述目的内存块链表的节点内存大小与所述剩余内存的大小相等。 上述系统中,优选的,还包括: 归入单元,用于在所述将其中一内存块节点的内存中与所述所需内存大小相等的 内存分配给所述应用程序,并将所述剩余内存归入目的内存块链表之后,当检测到所述应 用程序的释放内存时,将所述释放内存归入节点内存大小与其相等的内存块链表。 上述系统中,优选的,所述分配单元还用于: 在所述查找节点内存大小与所述所需内存大小相适应的内存块链表之后,在所述 查找到的内存块链表中,当其节点内存相较所述所需内存的剩余内存的大小低于所述节点 内存下限值时,将其中一内存块节点的内存都分配给所述应用程序。 上述系统中,优选的,所述内存块链表中各内存块节点按其内存地址线性排序,且 各所述内存块节点之间的内存地址离散; 该系统还包括: 合并单元,用于在将所述剩余内存归入所述目的内存块链表之后,当所述剩余内 存的内存地址与所述目的内存块链表中某个内存块节点的内存地址连续时,合并所述剩余 内存和与其内存地址连续的内存块节点; 以及所述归入单元还用于将合并得到的内存块节点归入节点内存大小与之内存 大小相等的内存块链表。 上述系统中,优选的,所述查找单元包括: 查找子单元,用于在表头链表中,查找所述节点内存大小与所述所需内存大小相 适应的内存块链表标识;其中,所述表头链表包括所述内存块链表标识和与所述内存块链 表标识相对应的内存块链表的节点内存大小; 确定子单元,用于将查找到的内存块链表标识,确定所述节点内存大小与所述所 需内存大小相适应的内存块链表。 以上本专利技术提供的一种内存分配管理方法及系统中,在应用程序初始申请内存 时,为其分配一块足够大的大小为N内存并利用这块内存建立一内存块链表,后续会由于 应用程序的频繁申请释放内存,形成很多大小小于N的内存块组成的链表,以上所有链表 形成内存块链表集,该内存块链表集当前第1页1 2 3 4 本文档来自技高网...

【技术保护点】
一种内存分配管理方法,其特征在于,包括:接收来自应用程序的携带所需内存大小的内存分配请求;在针对所述应用程序的内存块链表集中,查找节点内存大小与所述所需内存大小相适应的内存块链表;其中,与所述所需内存大小相适应的节点内存大小大于所述所需内存大小且与所述所需内存大小差值最小;所述内存块链表集包括至少一个内存块链表,所述内存块链表包括至少一个内存块节点且所述至少一个内存块节点中各内存块节点的节点内存大小相等;在查找到的内存块链表中,当其节点内存相较所需内存的剩余内存的大小不低于预设节点内存下限值时,将其中一内存块节点的内存中与所述所需内存大小相等的内存分配给所述应用程序,并将所述剩余内存归入目的内存块链表;其中,所述目的内存块链表的节点内存大小与所述剩余内存的大小相等。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘树亮
申请(专利权)人:浪潮北京电子信息产业有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1