一种内存管理的方法、装置、电子设备及存储介质制造方法及图纸

技术编号:26504329 阅读:27 留言:0更新日期:2020-11-27 15:31
本申请实施例提供了一种内存管理的方法、装置、电子设备及存储介质,涉及数据存储技术领域。本申请实施例的方案包括:当红黑树包括的第一节点被删除时,确定第一节点在预设内存池中占用的第一内存空间,预设内存池用于存储红黑树包括的节点,第一节点为红黑树包括的任一节点;然后将第一内存空间挂载到预设可利用空间表。可以避免内存资源的浪费。

【技术实现步骤摘要】
一种内存管理的方法、装置、电子设备及存储介质
本专利技术涉及数据存储
,特别是涉及一种内存管理的方法、装置、电子设备及存储介质。
技术介绍
目前为了保证对内存中的数据节点的查询和更新的高效性,可以采用红黑树的模式在内存中缓存数据节点。当存在数据的插入时,可以申请内存,在申请的内存中创建数据节点;当数据被删除时,可以释放数据节点占用的内存。数据的插入和删除会使得内存被频繁地申请和释放。在数据库长期运行后,内存被频繁地申请和释放会使得内存中存在大量的内存碎片,因内存碎片较小,且在内存中不连续,导致这些内存碎片无法被使用,造成了内存资源的浪费。
技术实现思路
本专利技术实施例的目的在于提供一种内存管理的方法、装置、电子设备及存储介质,以避免内存资源的浪费。具体技术方案如下:第一方面,本申请实施例提供一种内存管理的方法,包括:当红黑树包括的第一节点被删除时,确定所述第一节点在预设内存池中占用的第一内存空间,所述预设内存池用于存储所述红黑树包括的节点,所述第一节点为所述红黑树包括的任一节点;将所述第一内存空间挂载到预设可利用空间表。在一种可能的实现方式中,所述预设可利用空间表为双链表;所述将所述第一内存空间挂载到预设可利用空间表,包括:获取所述第一节点的左子节点指针和右子节点指针,所述左子节点指针指向所述第一节点的左子节点在所述预设内存池中的起始地址,所述右子节点指针指向所述第一节点的右子节点在所述预设内存池中的起始地址;将所述左子节点指针的指向修改为:最新挂载至所述预设可利用空间表中的内存空间在所述预设内存池中的起始地址,将所述右子节点指针的指向置为空;将最新挂载至所述预设可利用空间表中的内存空间的后指针的指向修改为所述第一内存空间在所述预设内存池中的起始地址;将所述第一内存空间挂载到所述预设可利用空间表,将所述左子节点指针作为所述第一内存空间的前指针,将所述右子节点指针作为所述第一内存空间的后指针。在一种可能的实现方式中,所述方法还包括:当所述红黑树中插入第二节点时,从所述预设内存池中为所述第二节点分配内存空间;若所述预设内存池中无可用内存空间,则从所述预设可利用空间表中为所述第二节点分配第二内存空间;在所述第二内存空间中存储所述第二节点;将所述第二内存空间从所述预设可利用空间表中卸载。在一种可能的实现方式中,所述在所述第二内存空间中存储所述第二节点,包括:获取所述第二内存空间的前指针和后指针;将所述第二内存空间的前指针的指向修改为:所述第二节点的左子节点在所述预设内存池中的起始地址,将所述第二内存空间的后指针的指向修改为:所述第二节点的右子节点在所述预设内存池中的起始地址;在所述第二内存空间中存储所述第二节点的数据,并将所述第二内存空间的前指针作为所述第二节点的左子节点指针,将所述第二内存空间的后指针作为所述第二节点的右子节点指针。第二方面,本申请实施例提供一种内存管理的装置,包括:确定模块,用于当红黑树包括的第一节点被删除时,确定所述第一节点在预设内存池中占用的第一内存空间,所述预设内存池用于存储所述红黑树包括的节点,所述第一节点为所述红黑树包括的任一节点;挂载模块,用于将所述第一内存空间挂载到预设可利用空间表。在一种可能的实现方式中,所述预设可利用空间表的结构为双链表;所述挂载模块,具体用于:获取所述第一节点包括的左子节点指针和右子节点指针,所述左子节点指针指向所述第一节点的左子节点在所述预设内存池中的起始地址,所述右子节点指针指向所述第一节点的右子节点在所述预设内存池中的起始地址;将所述左子节点指针的指向修改为:最新挂载至所述预设可利用空间表中的内存空间在所述预设内存池中的起始地址,将所述右子节点指针的指向置为空;将最新挂载至所述预设可利用空间表中的内存空间的后指针的指向修改为所述第一内存空间在所述预设内存池中的起始地址;将所述第一内存空间挂载到所述预设可利用空间表,将所述左子节点指针作为所述第一内存空间的前指针,将所述右子节点指针作为所述第一内存空间的后指针。在一种可能的实现方式中,所述装置还包括:分配模块,用于当所述红黑树中插入第二节点时,从所述预设内存池中为所述第二节点分配内存空间;以及用于若所述预设内存池中无可用内存空间,则从所述预设可利用空间表中为所述第二节点分配第二内存空间;存储模块,用于在所述第二内存空间中存储所述第二节点;删除模块,用于将所述第二内存空间从所述预设可利用空间表中卸载。在一种可能的实现方式中,所述存储模块,具体用于:获取所述第二内存空间的前指针和后指针;将所述第二内存空间的前指针的指向修改为:所述第二节点的左子节点在所述预设内存池中的起始地址,将所述第二内存空间的后指针的指向修改为:所述第二节点的右子节点在所述预设内存池中的起始地址;在所述第二内存空间中存储所述第二节点的数据,并将所述第二内存空间的前指针作为所述第二节点的左子节点指针,将所述第二内存空间的后指针作为所述第二节点的右子节点指针。第三方面,本专利技术实施例还提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现上述任一所述的内存管理的方法步骤。第四方面,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中所述的内存管理的方法。第五方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中所述的内存管理的方法。本专利技术实施例有益效果:采用上述技术方案,当红黑树包括的第一节点被删除时,不会将该第一节点占用的第一内存空间释放到预设内存池,而是将该第一内存空间挂载到预设可利用空间表,避免了预设内存池中产生内存碎片。因红黑树中的各节点所占用的内存空间相同,所以预设可利用空间表中的内存空间还可以被红黑树中后续插入的其他节点使用,避免了内存资源的浪费。当然,实施本专利技术的任一产品或方法并不一定需要同时达到以上所述的所有优点。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例提供的一种红黑树的示例性示意图;图2为本申请实施例提供的一种内存管理的方法的流程图;图3为本申请实施例提供的一种预设内存池的示例性示意图;图4为本申请实施例提供的内存管理方法中将内存空间挂载到预设可利用空间表的方法的流程图;本文档来自技高网...

【技术保护点】
1.一种内存管理的方法,其特征在于,包括:/n当红黑树包括的第一节点被删除时,确定所述第一节点在预设内存池中占用的第一内存空间,所述预设内存池用于存储所述红黑树包括的节点,所述第一节点为所述红黑树包括的任一节点;/n将所述第一内存空间挂载到预设可利用空间表。/n

【技术特征摘要】
1.一种内存管理的方法,其特征在于,包括:
当红黑树包括的第一节点被删除时,确定所述第一节点在预设内存池中占用的第一内存空间,所述预设内存池用于存储所述红黑树包括的节点,所述第一节点为所述红黑树包括的任一节点;
将所述第一内存空间挂载到预设可利用空间表。


2.根据权利要求1所述的方法,其特征在于,所述预设可利用空间表为双链表;所述将所述第一内存空间挂载到预设可利用空间表,包括:
获取所述第一节点的左子节点指针和右子节点指针,所述左子节点指针指向所述第一节点的左子节点在所述预设内存池中的起始地址,所述右子节点指针指向所述第一节点的右子节点在所述预设内存池中的起始地址;
将所述左子节点指针的指向修改为:最新挂载至所述预设可利用空间表中的内存空间在所述预设内存池中的起始地址,将所述右子节点指针的指向置为空;
将最新挂载至所述预设可利用空间表中的内存空间的后指针的指向修改为所述第一内存空间在所述预设内存池中的起始地址;
将所述第一内存空间挂载到所述预设可利用空间表,将所述左子节点指针作为所述第一内存空间的前指针,将所述右子节点指针作为所述第一内存空间的后指针。


3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当所述红黑树中插入第二节点时,从所述预设内存池中为所述第二节点分配内存空间;
若所述预设内存池中无可用内存空间,则从所述预设可利用空间表中为所述第二节点分配第二内存空间;
在所述第二内存空间中存储所述第二节点;
将所述第二内存空间从所述预设可利用空间表中卸载。


4.根据权利要求3所述的方法,其特征在于,所述在所述第二内存空间中存储所述第二节点,包括:
获取所述第二内存空间的前指针和后指针;
将所述第二内存空间的前指针的指向修改为:所述第二节点的左子节点在所述预设内存池中的起始地址,将所述第二内存空间的后指针的指向修改为:所述第二节点的右子节点在所述预设内存池中的起始地址;
在所述第二内存空间中存储所述第二节点的数据,并将所述第二内存空间的前指针作为所述第二节点的左子节点指针,将所述第二内存空间的后指针作为所述第二节点的右子节点指针。


5.一种内存管理的装置,其特征在于,包括:
确定模块,用于当红黑树包括的第一节点被删除时,确定所述第一节点在预设内存池中占用的第一内存空间,所述预设内存池用于存储所述红黑树包括的节点,所述第一节点为所述红黑树包括的任一节...

【专利技术属性】
技术研发人员:邱海港
申请(专利权)人:北京金山云网络技术有限公司
类型:发明
国别省市:北京;11

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

1