内存释放、内存恢复方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:36810272 阅读:11 留言:0更新日期:2023-03-09 00:40
本说明书提供一种内存释放、内存恢复方法、装置、计算机设备及存储介质,包括:确定待释放内存块;确定所述待释放内存块是否为零块;若为零块,访问预设零块数据;若预设零块数据未写入信息,确定不释放所述待释放内存块,更新所述待释放内存块为只读权限,以所述待释放内存块作为基准零块,在所述预设零块数据中写入所述待释放内存块的物理地址,创建与所述待释放内存块的虚拟地址对应的元数据并与所述预设零块数据关联;若预设零块数据已记录基准零块的物理地址,将所述待释放内存块对应的虚拟地址映射至所述物理地址,创建与所述虚拟地址对应的元数据并与所述预设零块数据关联后,释放所述待释放内存块;其中,所述元数据包括预设标记信息。括预设标记信息。括预设标记信息。

【技术实现步骤摘要】
内存释放、内存恢复方法、装置、计算机设备及存储介质


[0001]本公开涉及计算机
,尤其涉及内存释放、内存恢复方法、装置、计算机设备及存储介质。

技术介绍

[0002]操作系统对于每个运行的进程,会为其分配一定数量的内存块,并为每个进程创建对应的页表数据,用于记录该进程所使用的虚拟存储空间中各个虚拟地址与内存块的物理地址的映射关系。
[0003]为了灵活使用内存,对于已分配给各个进程的各个内存块,操作系统的内存管理模块还会记录这些内存块的冷热状态信息,以通过内存合并方案解决内存空间紧张的问题。
[0004]具体的,操作系统的内存合并模块启动后,会取出冷状态的待释放内存块,一开始先作为候选内存块;之后,再取出的待释放内存块,会与各个候选内存块存储的数据进行比较,确定是否有可合并的内存块,直至找到可合并的候选内存块或者所有候选内存块遍历结束。若找到可合并的候选内存块,则待释放内存块的虚拟地址会映射至找到的候选内存块的物理地址,从而释放出待释放内存块的物理地址。
[0005]上述方案中,每次处理一个待释放内存块时,都需要将待释放内存块的数据与候选内存块的数据进行比较,内存释放的速度较慢。
[0006]恢复方案中,当需要向某个虚拟地址恢复出一个内存块时,需要访问该虚拟地址映射的候选内存块,将候选内存块的数据拷贝至新分配的内存块中,并将该虚拟地址映射至新分配的内存块;因此也需要提升内存恢复的速度。

技术实现思路

[0007]为克服相关技术中存在的问题,本公开提供了内存释放、内存恢复方法、装置、计算机设备及存储介质。
[0008]根据本说明书实施例的第一方面,提供一种内存释放方法,所述方法包括:
[0009]响应于内存释放请求,确定待释放内存块;
[0010]确定所述待释放内存块是否为零块,所述零块表征内存块的各个比特位都为零;
[0011]若所述待释放内存块为零块,访问预设零块数据;
[0012]若所述预设零块数据未写入信息,确定不释放所述待释放内存块,更新所述待释放内存块为只读权限,以所述待释放内存块作为基准零块,在所述预设零块数据中写入所述待释放内存块的物理地址,创建与所述待释放内存块的虚拟地址对应的元数据并与所述预设零块数据关联;
[0013]若所述预设零块数据已记录基准零块的物理地址,将所述待释放内存块对应的虚拟地址映射至所述物理地址,创建与所述虚拟地址对应的元数据并与所述预设零块数据关联后,释放所述待释放内存块;其中,所述元数据包括预设标记信息。
[0014]根据本说明书实施例的第二方面,提供一种内存恢复方法,所述方法包括:
[0015]响应于内存恢复请求,根据所述内存恢复请求携带的虚拟地址,获取所述虚拟地址对应的元数据;
[0016]从内存中分配待写内存块;
[0017]若所述元数据中包括预设标记信息,访问预设零块数据;
[0018]若通过所述预设零块数据关联的元数据确定剩余基准零块,将所述基准零块的只读权限修改为读写权限,释放所述待写内存块,清空所述预设零块数据并删除所述元数据;
[0019]若通过所述预设零块数据关联的元数据确定有至少两个零块,将所述虚拟地址映射至所述待写内存块的物理地址,删除所述元数据。
[0020]根据本说明书实施例的第三方面,提供一种内存释放装置,所述装置包括:
[0021]请求模块,用于:响应于内存释放请求,确定待释放内存块;
[0022]零块确定模块,用于:确定所述待释放内存块是否为零块,所述零块表征内存块的各个比特位都为零;
[0023]访问模块,用于:若所述待释放内存块为零块,访问预设零块数据;
[0024]释放处理模块,用于:若所述预设零块数据未写入信息,确定不释放所述待释放内存块,更新所述待释放内存块为只读权限,以所述待释放内存块作为基准零块,在所述预设零块数据中写入所述待释放内存块的物理地址,创建与所述待释放内存块的虚拟地址对应的元数据并与所述预设零块数据关联;若所述预设零块数据已记录基准零块的物理地址,将所述待释放内存块对应的虚拟地址映射至所述物理地址,创建与所述虚拟地址对应的元数据并与所述预设零块数据关联后,释放所述待释放内存块;其中,所述元数据包括预设标记信息。
[0025]根据本说明书实施例的第四方面,提供一种内存恢复装置,所述装置包括:
[0026]请求模块,用于:响应于内存恢复请求,根据所述内存恢复请求携带的虚拟地址,获取所述虚拟地址对应的元数据;
[0027]分配模块,用于:从内存中分配待写内存块;
[0028]访问模块,用于:若所述元数据中包括预设标记信息,访问预设零块数据;
[0029]恢复处理模块,用于:若通过所述预设零块数据关联的元数据确定剩余基准零块,将所述基准零块的只读权限修改为读写权限,释放所述待写内存块,清空所述预设零块数据并删除所述元数据;若通过所述预设零块数据关联的元数据确定有至少两个零块,将所述虚拟地址映射至所述待写内存块的物理地址,删除所述元数据。
[0030]根据本说明书实施例的第五方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现前述第一方面或第二方面所述方法实施例的步骤。
[0031]根据本说明书实施例的第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述第一方面或第二方面所述方法实施例的步骤。
[0032]本公开的实施例提供的技术方案可以包括以下有益效果:
[0033]本公开实施例中,对于内存释放方案,针对零块进行单独管理和维护;根据内存释放请求,确定待释放内存块后,先确定待释放内存块是否为零块,通过预设零块数据记录零
块的信息,并通过预设零块数据确定待释放内存块是否有可合并的零块;由此可见,在释放时,针对零块无需遍历候选内存块,无需与其他内存块存储的数据一一进行比较,提升了内存释放的速度。同理,在内存恢复时,通过预设标记信息确定是要恢复零块时,恢复操作无需拷贝数据,提升了内存恢复的速度。
[0034]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
[0035]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
[0036]图1A是本说明书根据一示例性实施例示出的一种页表数据的示意图。
[0037]图1B是本说明书根据一示例性实施例示出的一种内存合并示意图。
[0038]图2A是本说明书根据一示例性实施例示出的一种内存释放方法的流程图。
[0039]图2B是本说明书根据一示例性实施例示出的一种内存的示意图。
[0040]图2C是本说明书根据一示例性实施例示出的一种NUMA架构的示意图。
[0本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存释放方法,所述方法包括:响应于内存释放请求,确定待释放内存块;确定所述待释放内存块是否为零块,所述零块表征内存块的各个比特位都为零;若所述待释放内存块为零块,访问预设零块数据;若所述预设零块数据未写入信息,确定不释放所述待释放内存块,更新所述待释放内存块为只读权限,以所述待释放内存块作为基准零块,在所述预设零块数据中写入所述待释放内存块的物理地址,创建与所述待释放内存块的虚拟地址对应的元数据并与所述预设零块数据关联;若所述预设零块数据已记录基准零块的物理地址,将所述待释放内存块对应的虚拟地址映射至所述物理地址,创建与所述虚拟地址对应的元数据并与所述预设零块数据关联后,释放所述待释放内存块;其中,所述元数据包括预设标记信息。2.根据权利要求1所述的方法,所述确定所述待释放内存块是否为零块,包括:对所述待释放内存块各个比特位是否都为零进行预判断;若预判断出所述待释放内存块中存在不为零的比特位,确定所述待释放内存块不是零块;若预判断出所述待释放内存块的各个比特位都为零,将所述待释放内存块的读写权限更改为只读后,再判断所述待释放内存块是否为零块。3.根据权利要求2所述的方法,所述对所述待释放内存块的各个比特位是否都为零进行预判断,包括:从所述待释放内存块中选取n个比特位,确定所述n个比特位是否都为零;其中,所述n为正整数;若否,预判断出所述待释放内存块中存在不为零的比特位;若是,对所述待释放内存块除所述n个比特位之外的其他比特位是否都为零进行预判断。4.根据权利要求3所述的方法,所述n个比特位为n个设定位置的比特位,所述确定所述n个比特位是否都为零,包括:利用预设编码算法生成所述n个设定位置的比特位的当前编码信息,所述预设编码算法用于对不同的输入生成不同的编码信息;将所述当前编码信息与预设编码信息进行比较,根据比较结果确定所述n个设定位置的比特位是否都为零;其中,所述预设编码信息是预先利用所述预设编码算法将n个均为零的比特位进行编码得到的信息。5.根据权利要求1所述的方法,所述方法还包括:若所述待释放内存块不是零块,获取候选内存块集合,确定所述候选内存块集合中是否存在与所述待释放内存块存储相同数据的目标内存块;若有,将所述待释放内存块的虚拟地址映射至所述目标内存块的物理地址,以及创建与所述虚拟地址对应的元数据,并在所述元数据中写入所述目标内存块的物理地址后,释放所述待释放内存块。6.根据权利要求5所述的方法,每个所述候选内存块对应有候选编码信息,所述候选编码信息是利用所述预设编码算法将所述候选内存块的n个设定位置的比特位的信息编码得
到的;所述候选内存块是否与所述待释放内存块存储相同数据,是通过如下方式确定的:将所述候选内存块的候选编码信息与所述待释放内存块的当前编码信息进行比较;若两者不同,确定所述候选内存块与所述待释放内存块存储不同数据;若两者相同,将所述待释放内存块和所述候选内存块的读写权限更改为只读后,比较所述候选内存块存储的数据与所述待释放内存块存储的数据是否相同。7.根据权利要求6所述的方法,所述候选内存块集合包括已合并的候选内存块集合和未合并的候选内存块集合;所述已合并的候选内存块集合采用合并树维护,所述合并树中的每个节点记录一个已合并的候选内存块的物理地址以及候选编码信息;所述未合并的候选内存块集合采用未合并树维护,所述未合...

【专利技术属性】
技术研发人员:郑豪
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

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

1