一种内存管理方法及装置制造方法及图纸

技术编号:16152840 阅读:43 留言:0更新日期:2017-09-06 18:16
本发明专利技术提供了一种内存管理方法及装置,解决现有内存管理方法可靠性及便捷性较低的问题。本发明专利技术实施的内存管理方法包括:创建内存节点树结构,所述内存节点树结构包括:多个内存节点,每个所述内存节点中记录有该内存节点与所述内存节点树结构中其他内存节点之间的关联关系,及该内存节点所占用内存块的内存使用状态信息;根据所述内存节点树结构,在所述内存节点中进行内存管理。本发明专利技术实施例根据内存节点树中记录的内存节点之间的关联信息,及每个内存节点所占用内存块的内存使用状态信息,能够清楚地了解每个内存块之间的层次关系,进而能够便捷可靠地对内存块进行内存管理。

【技术实现步骤摘要】
一种内存管理方法及装置
本专利技术涉及数据库内存管理的
,特别是指一种内存管理方法及装置。
技术介绍
任何应用程序都有自己的内存管理模型,找到一个适合的方法无疑可以提高系统的整体性能。数据库管理系统作为一个大型复杂软件系统,更需要一个稳定可靠的内存管理方法。但现有内存管理方法往往不能够便捷可靠地对内存进行内存分配和释放,从而不利于提高系统的整体性能。
技术实现思路
本专利技术的目的在于提供一种内存管理方法及装置,用以解决现有内存管理方法可靠性及便捷性较低的问题。为了实现上述目的,本专利技术提供了一种内存管理方法,包括:创建内存节点树结构,所述内存节点树结构包括:多个内存节点,每个所述内存节点中记录有该内存节点与所述内存节点树结构中其他内存节点之间的关联关系,及该内存节点所占用内存块的内存使用状态信息;根据所述内存节点树结构,在所述内存节点中进行内存管理。其中,所述根据所述内存节点树结构,在所述内存节点中进行内存管理,包括:根据所述内存节点树结构,在所述内存节点中进行内存分配或内存释放。其中,所述内存使用状态信息包括内存块链表及空闲内存片数组,所述内存块链表用于记录所述内存节点所占用的、按预设顺序排列的所有内存块,所述空闲内存片数组用于记录所述内存块中被回收的内存片,其中,所述内存片为在所述内存块中进行内存分配时产生的内存片段。其中,所述根据所述内存节点树结构,在所述内存节点中进行内存分配,包括:在所述内存节点树的多个内存节点中,确定需要进行内存分配的当前内存节点;判断申请分配内存是否大于所述当前内存节点所占用的内存块中允许分配内存片的最大值,得出第一判断结果;若所述第一判断结果为是,则分配一个新内存块,将所述新内存块的所有内存作为一个内存片进行分配,并将所述新内存块加入到所述内存块链表的活动内存块的后面,所述活动内存块为在所述内存块链表中排在首位的内存块;若所述第一判断结果为否,则判断所述当前内存节点的空闲内存片数组中是否存在合适的空闲内存片,得出第二判断结果;若所述第二判断结果为是,则对所述当前内存节点的空闲内存片数组中合适的空闲内存片进行分配,否则,在所述当前内存节点的活动内存块中进行内存分配。其中,所述在所述当前内存节点的活动内存块中进行内存分配,包括:判断所述当前内存节点的活动内存块中未分配的内存是否大于或等于申请分配内存,得出第三判断结果;若所述第三判断结果为是,则在所述当前内存节点的活动内存块中分配与所述申请分配内存对应大小的内存片;若所述第三判断结果为否,则将所述当前内存节点的活动内存块中未分配的内存加入到所述当前内存节点的空闲内存片数组中,并分配重新分配一内存块,在重新分配的内存块中分配与所述申请分配内存对应大小的内存片,且将所述重新分配的内存块作为所述当前内存节点的活动内存块。其中,所述判断所述当前内存节点的空闲内存片数组中是否存在合适的空闲内存片,包括:判断所述当前内存节点的空闲内存片数组中是否存在一空闲内存片满足预设条件,所述预设条件为所述空闲内存片的内存大于申请分配的内存,且所述空闲内存片的内存与所述申请分配的内存之间的内存差值处于预设范围内;若所述当前内存节点的空闲内存片数组中存在一空闲内存片满足所述预设条件,则判断出所述当前内存节点的空闲内存片数组中存在合适的空闲内存片,否则,判断出所述当前内存节点的空闲内存片数组中不存在合适的空闲内存片。其中,所述根据所述内存节点树结构,在所述内存节点中进行内存释放,包括:接收内存片释放指令;根据所述内存片释放指令,判断待释放内存片的内存是否大于所述待释放内存片所归属内存块中允许分配内存片的最大值,得出第四判断结果;若所述第四判断结果为是,则释放所述待释放内存片,否则,将所述待释放内存片加入到所述待释放内存片所归属内存块对应内存节点的空闲内存片数组中。其中,所述根据所述内存节点树结构,在所述内存节点中进行内存释放,包括:接收内存节点释放指令;根据所述内存节点释放指令及待释放内存节点与所述内存节点树结构中其他内存节点之间的关联关系,判断所述待释放内存节点是否存在子内存节点;若所述待释放内存节点存在子内存节点,则释放所述待释放内存节点及所述待释放内存节点的子内存节点所占用的所有内存块,否则,释放所述待释放内存节点所占用的所有内存块。本专利技术的实施例还提供了一种内存管理装置,包括:创建模块,用于创建内存节点树结构,所述内存节点树结构包括:多个内存节点,每个所述内存节点中记录有该内存节点与所述内存节点树结构中其他内存节点之间的关联关系,及该内存节点所占用内存块的内存使用状态信息;管理模块,用于根据所述内存节点树结构,在所述内存节点中进行内存管理。其中,所述管理模块具体用于根据所述内存节点树结构,在所述内存节点中进行内存分配或内存释放。其中,所述内存使用状态信息包括内存块链表及空闲内存片数组,所述内存块链表用于记录所述内存节点所占用的、按预设顺序排列的所有内存块,所述空闲内存片数组用于记录所述内存块中被回收的内存片,其中,所述内存片为在所述内存块中进行内存分配时产生的内存片段。其中,所述管理模块包括:确定子模块,用于在所述内存节点树的多个内存节点中,确定需要进行内存分配的当前内存节点;第一判断子模块,用于判断申请分配内存是否大于所述当前内存节点所占用的内存块中允许分配内存片的最大值,得出第一判断结果;第一处理子模块,用于若所述第一判断结果为是,则分配一个新内存块,将所述新内存块的所有内存作为一个内存片进行分配,并将所述新内存块加入到所述内存块链表的活动内存块的后面,所述活动内存块为在所述内存块链表中排在首位的内存块;第二判断子模块,用于若所述第一判断结果为否,则判断所述当前内存节点的空闲内存片数组中是否存在合适的空闲内存片,得出第二判断结果;第二处理子模块,用于若所述第二判断结果为是,则对所述当前内存节点的空闲内存片数组中合适的空闲内存片进行分配,否则,在所述当前内存节点的活动内存块中进行内存分配。其中,所述第二处理子模块包括:第一判断单元,用于判断所述当前内存节点的活动内存块中未分配的内存是否大于或等于申请分配内存,得出第三判断结果;分配单元,用于若所述第三判断结果为是,则在所述当前内存节点的活动内存块中分配与所述申请分配内存对应大小的内存片;处理单元,用于若所述第三判断结果为否,则将所述当前内存节点的活动内存块中未分配的内存加入到所述当前内存节点的空闲内存片数组中,并分配重新分配一内存块,在重新分配的内存块中分配与所述申请分配内存对应大小的内存片,且将所述重新分配的内存块作为所述当前内存节点的活动内存块。其中,所述第二判断子模块包括:第二判断单元,用于判断所述当前内存节点的空闲内存片数组中是否存在一空闲内存片满足预设条件,所述预设条件为所述空闲内存片的内存大于申请分配的内存,且所述空闲内存片的内存与所述申请分配的内存之间的内存差值处于预设范围内;第三判断单元,用于若所述当前内存节点的空闲内存片数组中存在一空闲内存片满足所述预设条件,则判断出所述当前内存节点的空闲内存片数组中存在合适的空闲内存片,否则,判断出所述当前内存节点的空闲内存片数组中不存在合适的空闲内存片。其中,所述管理模块包括:第一接收子模块,用于接收内存片释放指令;本文档来自技高网...
一种内存管理方法及装置

【技术保护点】
一种内存管理方法,其特征在于,包括:创建内存节点树结构,所述内存节点树结构包括:多个内存节点,每个所述内存节点中记录有该内存节点与所述内存节点树结构中其他内存节点之间的关联关系,及该内存节点所占用内存块的内存使用状态信息;根据所述内存节点树结构,在所述内存节点中进行内存管理。

【技术特征摘要】
1.一种内存管理方法,其特征在于,包括:创建内存节点树结构,所述内存节点树结构包括:多个内存节点,每个所述内存节点中记录有该内存节点与所述内存节点树结构中其他内存节点之间的关联关系,及该内存节点所占用内存块的内存使用状态信息;根据所述内存节点树结构,在所述内存节点中进行内存管理。2.根据权利要求1所述内存管理方法,其特征在于,所述根据所述内存节点树结构,在所述内存节点中进行内存管理,包括:根据所述内存节点树结构,在所述内存节点中进行内存分配或内存释放。3.根据权利要求2所述的内存管理方法,其特征在于,所述内存使用状态信息包括内存块链表及空闲内存片数组,所述内存块链表用于记录所述内存节点所占用的、按预设顺序排列的所有内存块,所述空闲内存片数组用于记录所述内存块中被回收的内存片,其中,所述内存片为在所述内存块中进行内存分配时产生的内存片段。4.根据权利要求3所述的内存管理方法,其特征在于,所述根据所述内存节点树结构,在所述内存节点中进行内存分配,包括:在所述内存节点树的多个内存节点中,确定需要进行内存分配的当前内存节点;判断申请分配内存是否大于所述当前内存节点所占用的内存块中允许分配内存片的最大值,得出第一判断结果;若所述第一判断结果为是,则分配一个新内存块,将所述新内存块的所有内存作为一个内存片进行分配,并将所述新内存块加入到所述内存块链表的活动内存块的后面,所述活动内存块为在所述内存块链表中排在首位的内存块;若所述第一判断结果为否,则判断所述当前内存节点的空闲内存片数组中是否存在合适的空闲内存片,得出第二判断结果;若所述第二判断结果为是,则对所述当前内存节点的空闲内存片数组中合适的空闲内存片进行分配,否则,在所述当前内存节点的活动内存块中进行内存分配。5.根据权利要求4所述的内存管理方法,其特征在于,所述在所述当前内存节点的活动内存块中进行内存分配,包括:判断所述当前内存节点的活动内存块中未分配的内存是否大于或等于申请分配内存,得出第三判断结果;若所述第三判断结果为是,则在所述当前内存节点的活动内存块中分配与所述申请分配内存对应大小的内存片;若所述第三判断结果为否,则将所述当前内存节点的活动内存块中未分配的内存加入到所述当前内存节点的空闲内存片数组中,并分配重新分配一内存块,在重新分配的内存块中分配与所述申请分配内存对应大小的内存片,且将所述重新分配的内存块作为所述当前内存节点的活动内存块。6.根据权利要求4所述的内存管理方法,其特征在于,所述判断所述当前内存节点的空闲内存片数组中是否存在合适的空闲内存片,包括:判断所述当前内存节点的空闲内存片数组中是否存在一空闲内存片满足预设条件,所述预设条件为所述空闲内存片的内存大于申请分配的内存,且所述空闲内存片的内存与所述申请分配的内存之间的内存差值处于预设范围内;若所述当前内存节点的空闲内存片数组中存在一空闲内存片满足所述预设条件,则判断出所述当前内存节点的空闲内存片数组中存在合适的空闲内存片,否则,判断出所述当前内存节点的空闲内存片数组中不存在合适的空闲内存片。7.根据权利要求3所述的内存管理方法,其特征在于,所述根据所述内存节点树结构,在所述内存节点中进行内存释放,包括:接收内存片释放指令;根据所述内存片释放指令,判断待释放内存片的内存是否大于所述待释放内存片所归属内存块中允许分配内存片的最大值,得出第四判断结果;若所述第四判断结果为是,则释放所述待释放内存片,否则,将所述待释放内存片加入到所述待释放内存片所归属内存块对应内存节点的空闲内存片数组中。8.根据权利要求3所述的内存管理方法,其特征在于,所述根据所述内存节点树结构,在所述内存节点中进行内存释放,包括:接收内存节点释放指令;根据所述内存节点释放指令及待释放内存节点与所述内存节点树结构中其他内存节点之间的关联关系,判断所述待释放内存节点是否存在子内存节点;若所述待释放内存节点存在子内存节点,则释放所述待释放内存节点及所述待释放内存节点的子内存节点所占用的所有内存块,否则,释放所述待释放内存节点所占用的所有内存块。9.一种内存管理装置,其特征在于,包括:创建模块,用...

【专利技术属性】
技术研发人员:郑程光
申请(专利权)人:北大方正集团有限公司北大方正信息产业集团有限公司上海方正数字出版技术有限公司
类型:发明
国别省市:北京,11

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

1