System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 内存申请方法及相关装置制造方法及图纸_技高网

内存申请方法及相关装置制造方法及图纸

技术编号:40652658 阅读:3 留言:0更新日期:2024-03-13 21:29
本申请实施例提供了内存申请方法及相关装置,本申请在接收到指示存储待存储数据的系统消息后,先确定存储待存储数据所需要的内存需求量,在内存需求量大于第一阈值的情况下,从第一类存储单元中申请内存。其中,第一类存储单元的运行效率低于第二类存储单元的运行效率,从第一类存储单元中申请到内存的概率更大,因此,本申请可以在内存不足的情况下,提高内存申请效率,即可以更快申请到需要的内存。

【技术实现步骤摘要】

本申请涉及计算机,尤其涉及内存申请方法及相关装置


技术介绍

1、随着计算机科学技术的不断发展,电子设备中的软件(application,app)种类越来越多。电子设备在app运行过程中存在许多数据处理,示例性地,为了使电子设备看起来更加流畅,可以在打开/关闭应用时显示动效,因此,电子设备需要对动效显示相关的效果参数进行处理。又示例性地,为了增强用户的听感体验,用户可以在音乐播放软件中选择不同音效播放音乐,因此,电子设备需要对音效播放相关的效果参数进行处理。

2、在进行数据处理之前,电子设备需要申请用于存放数据的内存。在电子设备后台运行的程序多、内存不足的情况下,内存申请效率低。


技术实现思路

1、本申请实施例提供了内存申请方法及相关装置,本申请在接收到指示存储待存储数据的系统消息后,先确定存储待存储数据所需要的内存需求量,在内存需求量大于第一阈值的情况下,从第一类存储单元中申请内存。其中,第一类存储单元的运行效率低于第二类存储单元的运行效率,从第一类存储单元中申请到内存的概率更大,因此,本申请可以在内存不足的情况下,提高内存申请效率,即可以更快申请到需要的内存。

2、第一方面,本申请实施例提供了一种内存申请方法,上述方法应用于电子设备,电子设备的内存包括第一类存储单元和第二类存储单元,上述第二类存储单元的运行效率高于上述第一类存储单元的运行效率,上述方法包括:

3、接收系统消息,上述系统消息用于指示存储待存储数据;

4、确定存储上述待存储数据所需要的内存需求量;

5、在上述内存需求量大于第一阈值的情况下,从上述第一类存储单元中申请内存。

6、本实施例中,上述方法的执行主体可以是电子设备,也可以是电子设备中的程序。其中,电子设备中的程序可以是内核程序,该内核程序可以理解为本申请实施例中的安卓内核;也可以是内核程序之外的其他程序,比如可以是本申请实施例中的内存申请函数。

7、本申请实施例中,系统消息可以理解为任意用于指示存储待存储数据的消息,触发执行主体申请内存以存储待存储数据。示例性地,该系统消息可以是内核层的上层向内核层中的内核程序发送的消息,也可以是内核程序向内存申请函数发送的消息。因此,在执行主体为内核程序的情况下,该系统消息可以是内核层的上层向内核层中的内核程序发送的消息,在执行主体为内存申请函数的情况下,该系统消息可以是内核程序向内存申请函数发送的消息。

8、本申请实施例中,系统消息可以是待存储数据本身,也可以是待解析的消息,将系统消息解析后可以得到待存储数据。示例性地,在执行主体为内存申请函数,系统消息需要解析的情况下,内存申请函数可以接收内核程序发送的、待解析的系统消息,然后解析该系统消息得到待存储数据;或者,内核程序可以对系统消息进行解析得到待存储数据,然后将待存储数据作为系统消息发送给内存申请函数。

9、本申请实施例中,待存储数据可以是任何既可以存储在第一类存储单元,又可以存储在第二类存储单元中的数据,例如可以是效果参数,也可以是其他数据,本申请对此不作限定。

10、本申请实施例中,第一类存储单元和第二类存储单元均为电子设备的存储资源,其中,第二类存储单元的运行效率低于第一类存储单元的运行效率。在一种实现方式中,第一类存储单元和第二类存储单元可以是分级存储中不同级次的存储单元,第二类存储单元的级次低于第一类存储单元的级次,比如第二类存储单元为一级内存,第一类存储单元为二级内存,其他级次可以类推。在另一种实现方式中,第一类存储单元为虚拟内存,第二类存储单元为物理内存。

11、存储待存储数据所需要的内存需求量可以理解为内存大小,具体单位可以是比特、字节等。可以理解,在从第一类存储单元中申请内存后可以得到内存(简称为目标内存),该目标内存的大小与内存需求量匹配。在得到目标内存后,可以将待存储数据存储到目标内存中,然后对待存储数据进行后续处理。

12、本申请实施例中,第一阈值可以根据从第一类存储单元和第二类存储单元中申请内存的成功率来确定,由于第一类存储单元的运行效率低于第二类存储单元的运行效率,即从第一类存储单元中申请内存比从第二类存储单元中申请内存更加容易,假设统计结果反映从第二类存储单元中申请小于a字节的内存成功率较高(比如高于80%),但是申请大于a字节的内存成功很低(比如低于20%),那么上述第一阈值可以设定为a字节。在一些实施例中,也可以根据内存占用情况调整第一阈值,比如检测到内存不足(后天运行进程数量大于一定数量),可以将初始设置的第一阈值调小。

13、结合第一方面,在一种可能的实施方式中,上述方法还包括:

14、在上述内存需求量小于上述第一阈值的情况下,从上述第二类存储单元中申请内存。

15、本实施例中,先确定内存需求量,然后通过内存需求量的大小来选定申请内存的方式,在内存需求量大于第一阈值的情况下,从容易申请到内存的第一类存储单元中申请内存,在内存需求量小于第一阈值的情况下,直接从第二类存储单元中申请内存,可以提高内存申请效率。

16、可以理解,在内存需求量等于第一阈值的情况下,可以从上述第二类存储单元中申请内存,也可以从第一类存储单元中申请内存,具体可以根据实际情况设定,本申请对此不作限定。

17、结合第一方面,在一种可能的实施方式中,上述方法还包括:

18、在从上述第二类存储单元中申请内存失败的情况下,从上述第一类存储单元中申请内存。

19、可以理解,第二类存储单元本身为运行效率高的内存单元,尽管内存需求量小于才会从第二类存储单元中申请内存,但是不可避免存在内存严重不足,导致即使内存需求量小也难以申请到内存的情况。因此,本实施例在从上述第二类存储单元中申请内存失败的情况下,从上述第一类存储单元中申请内存,可以降低内存申请失败的概率。

20、本申请实施例中,在第一类存储单元为虚拟内存,第二类存储单元为物理内存的情况下,可以使用vmalloc函数申请从第一类存储单元中申请内存,得到虚拟内存;使用kmalloc函数从第二类存储单元中申请内存,得到物理内存。可选地,上述实施例中,从第二类存储单元中申请内存,在从第二类存储单元中申请内存失败的情况下,从上述第一类存储单元中申请内存可以由kvmalloc函数实现。上述情况下,第一阈值可以设定为4kb。

21、在执行主体为电子设备或内核程序的情况下,本实施例的具体实现示例可以参阅图5。

22、结合第一方面,在一种可能的实施方式中,上述电子设备的内核程序中包括钩子函数;上述接收系统消息,包括:

23、内存申请函数接收由钩子函数发送的系统消息,内存申请函数为内核程序之外的其他程序。

24、本实施例中,内核程序中包括钩子函数,可以理解为内核程序中包括hook点,关于hook点的相关描述可以参阅图7(a)的介绍,这里不再赘述。

25、可选地,钩子函数的运行本文档来自技高网...

【技术保护点】

1.一种内存申请方法,其特征在于,应用于电子设备,所述电子设备的内存包括第一类存储单元和第二类存储单元,所述第二类存储单元的运行效率高于所述第一类存储单元的运行效率,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:

4.根据权利要求1-3中任一项所述的方法,其特征在于,所述电子设备的内核程序中包括钩子函数;所述接收系统消息,包括:

5.根据权利要求4所述方法,其特征在于,所述钩子函数的运行环境包括所述钩子函数的函数声明以及所述钩子函数的导出函数;所述函数声明用于定义所述钩子函数的函数名称、函数类型以及输入参数,所述导出函数用于使能所述钩子函数被所述内核程序调用。

6.根据权利要求4或5所述的方法,其特征在于,所述内存申请函数的运行环境包括所述内存申请函数的注册函数,所述注册函数用于将所述内存申请函数与所述钩子函数绑定。

7.根据权利要求4-6中任一项所述的方法,其特征在于,所述方法还包括:

8.根据权利要求1-7中任一项所述的方法,其特征在于,所述第一类存储单元为虚拟内存,所述第二类存储单元为物理内存。

9.一种电子设备,其特征在于,包括处理器、存储器,所述存储器用于存储计算机程序,所述存储器的内存包括第一类存储单元和第二类存储单元,所述第二类存储单元的运行效率高于所述第一类存储单元的运行效率;所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,使得如权利要求1-8中任一项所述的方法被执行。

10.一种芯片,其特征在于,包括逻辑电路和接口,所述逻辑电路和接口耦合;所述接口用于输入和/或输出代码指令,所述逻辑电路用于执行所述代码指令,以使权利要求1-8中任一项所述的方法被执行。

11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时,使得如权利要求1-8中任一项所述的方法被执行。

...

【技术特征摘要】

1.一种内存申请方法,其特征在于,应用于电子设备,所述电子设备的内存包括第一类存储单元和第二类存储单元,所述第二类存储单元的运行效率高于所述第一类存储单元的运行效率,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:

4.根据权利要求1-3中任一项所述的方法,其特征在于,所述电子设备的内核程序中包括钩子函数;所述接收系统消息,包括:

5.根据权利要求4所述方法,其特征在于,所述钩子函数的运行环境包括所述钩子函数的函数声明以及所述钩子函数的导出函数;所述函数声明用于定义所述钩子函数的函数名称、函数类型以及输入参数,所述导出函数用于使能所述钩子函数被所述内核程序调用。

6.根据权利要求4或5所述的方法,其特征在于,所述内存申请函数的运行环境包括所述内存申请函数的注册函数,所述注册函数用于将所述内存申请函数与所述钩子函数绑定。

7.根据权利要...

【专利技术属性】
技术研发人员:齐明龙张凯亮胡大帅
申请(专利权)人:荣耀终端有限公司
类型:发明
国别省市:

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

1