一种内存分配方法以及相关装置制造方法及图纸

技术编号:36577876 阅读:10 留言:0更新日期:2023-02-04 17:36
本申请实施例公开了一种内存分配方法,用于提高内存分配的效率。本申请实施例方法包括:根据第一数据栈,向目标应用程序提供内存资源,其中,第一数据栈用于指示目标应用程序可使用的内存资源,基于内存资源为第一内存资源,第一内存资源等于第一阈值,根据第二数据栈向目标应用程序提供内存资源,其中,第二数据栈用于指示目标应用程序可使用的第二内存资源,第二内存资源大于第一阈值,第一数据栈与第二数据栈不同。与第二数据栈不同。与第二数据栈不同。

【技术实现步骤摘要】
一种内存分配方法以及相关装置


[0001]本申请实施例涉及一种内存分配方法以及相关装置。

技术介绍

[0002]在计算机系统中,需要对内存资源进行统筹管理,从而为应用程序申请以及释放内存。当内存的申请以及释放的频率较高时,所需要消耗的时间也就越多,为了满足应用程序高效运行的需求,需要进一步提升内存分配的效率。
[0003]目前的内存分配方案中,当应用程序申请内存的时候,可以通过数据栈向应用程序分配内存单元,当数据栈中的内存单元不足时,还可以从内存池将内存单元分配到数据栈中,从而不断满足应用程序的需求。
[0004]然而,从内存池将内存单元分配到数据栈中的过程中,数据栈无法向应用程序分配内存单元,因此内存分配效率不高。

技术实现思路

[0005]本申请实施例提供了一种内存分配方法以及相关装置,用于提高内存分配的效率。
[0006]本申请实施例第一方面提供了一种内存分配方法:
[0007]数据栈是一种数据结构,可以用于存储数据,在内存分配的应用场景中,可以根据数据栈存储内存资源,从而向应用程序提供内存资源。将内存资源存储在两个不同的数据栈中,包括第一数据栈以及第二数据栈。对于第一数据栈,第一数据栈指示了目标应用程序可使用的内存资源,该内存资源会随着应用程序申请或者释放内存而发生变化。当上述第一数据栈指示的内存资源更新为第一内存资源,且第一内存资源等于第一阈值,则根据第二数据栈向目标应用程序提供内存资源,其中,第二数据栈指示了目标应用程序可使用的第二内存资源,并且第二内存资源大于第一阈值。
[0008]本申请实施例中,第一阈值表示内存资源即将耗尽或者已经耗尽,因此当第一内存资源等于第一阈值时,根据第二数据栈向应用程序提供内存资源,节省了等待分配内存资源到数据栈的时间,提高了内存分配的效率。
[0009]在一种可能的实现方式中,第一内存资源以及第二内存资源包括内存单元的数量,第一数据栈的长度以及第二数据栈的长度与内存单元的数量呈正相关,第一数据栈以及第二数据栈中的内存单元的大小相同。
[0010]在一种可能的实现方式中,根据第二数据栈向目标应用程序提供内存资源之前,还可以获取第二数据栈指示的第三内存资源,以及第一数据栈指示的第四内存资源,其中,第四内存资源在损耗后会更新为第一内存资源,第三内存资源小于第二内存资源。基于第四内存资源小于或等于第二阈值且大于第一阈值,以及第三内存资源小于或等于第三阈值,为第二数据栈分配内存单元,以便将第三内存资源更新为第二内存资源,其中第二内存资源还大于第三阈值。
[0011]本申请实施例中,第二阈值以及第三阈值表示内存单元的数量已经处于不充足的状态,因此在第四内存资源更新为第一内存资源之前,为第二数据栈分配内存单元,从而为根据第二数据栈向应用程序提供内存资源做准备,提高内存分配的效率。
[0012]在一种可能的实现方式中,根据第二数据栈向目标应用程序提供内存资源之后,还可以获取第二数据栈指示的第五资源,该第五资源为第二资源经过损耗之后得到,第五资源小于第二资源。基于第五内存资源小于或等于第三阈值且大于第四阈值,以及第一内存资源小于第二阈值,为第一数据栈分配内存单元。
[0013]本申请实施例中,第四阈值表示内存资源即将耗尽或者已经耗尽,当第二数据栈中的内存单元的数量,也即第五资源处于不充足的状态,但是尚未即将耗尽或者已经耗尽时,为第一数据栈分配内存单元,从而为根据第一数据栈为应用程序提供内存资源做准备,提供内存分配的效率。
[0014]在一种可能的实现方式中,还可以获取第二数据栈指示的第六内存资源,第六内存资源为第五内存资源损耗后得到。基于第六内存资源等于第四阈值,根据第一数据栈向目标应用程序提供内存资源。
[0015]本申请实施例中,在第二数据栈的内存单元的数量即将耗尽或者已经耗尽的时候,根据第一数据栈向目标应用程序提供内存资源,提高了方案的可靠性。
[0016]在一种可能的实现方式中,可以根据硬件加速器为第一数据栈分配内存单元。
[0017]在一种可能的实现方式中,可以根据硬件加速器为第二数据栈分配内存单元。
[0018]在一种可能的实现方式中,第一阈值以及第四阈值为0。
[0019]本申请实施例第二方面提供了一种内存释放方法:
[0020]根据第一数据栈接收目标应用程序释放的内存资源,其中,第一数据栈指示了目标应用程序可使用的内存资源。当第一数据栈指示的内存资源为第七内存资源,且第七内存资源等于第五阈值时,根据第二数据栈接收目标应用程序释放的内存资源,其中,第二数据栈指示了目标应用程序可使用的第八内存资源,且该第八内存资源未使第二数据栈处于栈满状态。
[0021]本申请实施例中,第五阈值表示第一数据栈即将或者已经处于栈满状态,无法再接收内存资源,因此根据未处于栈满状态的第二数据栈接收目标应用程序释放的内存资源,从而无需先回收数据栈中的内存资源,然后再根据数据栈接收目标应用程序释放的内存资源的时间,提高了内存释放的效率。
[0022]在一种可能的实现方式中,第七内存资源以及第八内存资源包括内存单元的数量,第一数据栈的长度以及第二数据栈的长度与内存单元的数量呈正相关,第一数据栈以及第二数据栈中的内存单元的大小相同。
[0023]在一种可能的实现方式中,根据第二数据栈接收目标应用程序释放的内存资源之前,还可以获取第一数据栈指示的第九内存资源,该第九内存资源在补充了内存单元之后更新后得到上述第七内存资源,第九内存资源小于第一内存资源。基于第九内存资源大于或等于第六阈值且小于第五阈值,释放第二数据栈中的所述内存单元,以便将第二数据栈指示的第十内存资源更新为第八内存资源。
[0024]本申请实施例中,第六阈值表示第一数据栈中的内存单元的数量处于较高的水准,基于此释放第二数据栈中的内存单元,为根据第二数据栈接收目标应用程序释放的内
存资源做准备,提供内存释放的效率。
[0025]在一种可能的实现方式中,根据第二数据栈接收目标应用程序释放的内存资源之后,还可以获取第二数据栈指示的第十一内存资源。随着内存单元数量的增加,第八内存资源更新后得到第十一内存资源,第十一内存资源大于第八内存资源。基于第十一内存资源大于或等于第七阈值且小于第八阈值,释放第一数据栈中的内存单元。
[0026]本申请实施例中,第七阈值表示第二数据栈中的内存单元的数量处于较高的水准,第八阈值表示即将或者已经处于栈满状态,因此释放第一数据栈中的内存单元,为根据第一数据栈接收目标应用程序释放的内存资源做准备,提高内存释放的效率。
[0027]在一种可能的实现方式中,还可以获取第二数据栈指示的第十二内存资源,随着内存单元数量的增加,第十一内存资源更新后得到第十二内存资源。基于第十二内存资源等于第八阈值,根据第一数据栈接收目标应用程序释放的内存资源。
[0028]本申请实施例中,当第二数据栈也即将或者已经处于栈满状态时,根据第一数据栈接收目标应用程序释放的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存分配方法,其特征在于,包括:根据第一数据栈,向目标应用程序提供内存资源,其中,所述第一数据栈用于指示所述目标应用程序可使用的内存资源;基于所述目标应用程序可使用的内存资源为第一内存资源,所述第一内存资源等于第一阈值,根据第二数据栈向所述目标应用程序提供内存资源,其中,所述第二数据栈用于指示所述目标应用程序可使用的第二内存资源,所述第二内存资源大于所述第一阈值,所述第一数据栈与所述第二数据栈不同。2.根据权利要求1所述的方法,其特征在于,所述第一内存资源以及所述第二内存资源包括内存单元的数量,所述第一数据栈的长度以及所述第二数据栈的长度与所述内存单元的数量呈正相关,所述第一数据栈以及所述第二数据栈中的内存单元的大小相同。3.根据权利要求1或2所述的方法,其特征在于,所述根据第二数据栈向所述目标应用程序提供内存资源之前,所述方法还包括:获取所述第二数据栈指示的第三内存资源,以及所述第一数据栈指示的第四内存资源,所述第四内存资源更新后得到所述第一内存资源,所述第三内存资源更新后得到所述第二内存资源;基于所述第四内存资源小于或等于第二阈值且大于所述第一阈值,以及所述第三内存资源小于或等于第三阈值,为所述第二数据栈分配所述内存单元,以便将所述第三内存资源更新为所述第二内存资源,所述第二内存资源大于所述第三阈值。4.根据权利要求3所述的方法,其特征在于,所述根据第二数据栈向所述目标应用程序提供内存资源之后,所述方法还包括:获取所述第二数据栈指示的第五内存资源,所述第二内存资源更新后得到所述第五内存资源;基于所述第五内存资源小于或等于所述第三阈值且大于第四阈值,以及所述第一内存资源小于所述第二阈值,为所述第一数据栈分配所述内存单元。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:获取所述第二数据栈指示的第六内存资源,所述第五内存资源更新后得到所述第六内存资源;基于所述第六内存资源等于所述第四阈值,根据所述第一数据栈向所述目标应用程序提供内存资源。6.根据权利要求4或5所述的方法,其特征在于,所述为所述第一数据栈分配所述内存单元包括:调用硬件加速器为所述第一数据栈分配所述内存单元。7.根据权利要求3至6中任一项所述的方法,其特征在于,所述为所述第二数据栈分配所述内存单元包括:调用所述硬件加速器为所述第二数据栈分配所述内存单元。8.根据权利要求4至7中任一项所述的方法,其特征在于,所述第一阈值以及所述第四阈值为0。9.一种内存释放方法,其特征在于,包括:根据第一数据栈,接收目标应用程序释放的内存资源,其中,所述第一数据栈用于指示
所述目标应用程序可使用的内存资源;基于所述可使用的内存资源为第七内存资源,所述第七内存资源等于第五阈值,根据第二数据栈接收所述目标应用程序释放的内存资源,其中,所述第二数据栈用于指示所述目标应用程序可使用的第八内存资源,所述第八内存资源未使所述第二数据栈为栈满状态,所述第一数据栈与所述第二数据栈不同。10.根据权利要求9所述的方法,其特征在于,所述第七内存资源以及所述第八内存资源包括内存单元的数量,所述第一数据栈的长度以及所述第二数据栈的长度与所述内存单元的数量呈正相关,所述第一数据栈以及所述第二数据栈中的内存单元的大小相同。11.根据权利要求10所述的方法,其特征在于,所述根据第二数据栈向所述目标应用程序提供内存资源之前,所述方法还包括:获取所述第一数据栈指示的第九内存资源,所述第九内存资源更新后得到所述第七内存资源;基于所述第九内存资源大于或等于第六阈值且小于所述第五阈值,释放所述第二数据栈中的所述内存单元,以便将所述第二数据栈指示的第十内存资源更新为所述第八内存资源。12.根据权利要求11所述的方法,其特征在于,所述根据第二数据栈向所述目标应用程序提供内存资源之后,所述方法还包括:获取所述第二数据栈指示的第十一内存资源,所述第八内存资源更新后得到所述第十一内存资源,所述第十一内存资源大于所述第八内存资源;基于所述第十一内存资源大于或等于第七阈值且小于第八阈值,释放所述第一数据栈中的所述内存单元。13.根据权利要求12所述的方法,其特征在于,所述方法还包括:获取所述第二数据栈指示的第十二内存资源,所述第十一内存资源更新后得到所述第十二内存资源;基于所述第十二内存资源等于所述第八阈值,根据所述第一数据栈接收所述目标应用程序释放的内存资源。14.根据权利要求12或13所述的方法,其特征在于,所述释放所述第一数据栈中的所述内存单元包括:调用硬件加速器释放所述第一数据栈中的所述内存单元。15.根据权利要求11至14中任一项所述的方法,其特征在于,所述释放所述第二数据栈中的所述内存单元包括:调用硬件加速器释放所述第二数据栈中的所述内存单元。16.一种内存分配设备,其特征在于,包括:处理单元,用于根据第一数据栈,向目标应用程序提供内存资源,其中,所述第一数据栈用于指示所述目标应用程序可使用的内存资源;所述处理单元,还用于基于所述目标应用程序可使用的内存资源为第一内存资源,所述第一内存资源等于第一阈值,根据第二数据栈向所述目标应用程序提供内存资源,其中,所述第二数据栈用于指示所述目标...

【专利技术属性】
技术研发人员:熊婕王睿秦涛史济源
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1