内存申请方法和电子设备与流程

文档序号:35283726发布日期:2023-09-01 04:16阅读:37来源:国知局
内存申请方法和电子设备与流程

本技术涉及电子,具体涉及一种内存申请方法和电子设备。


背景技术:

1、通常,电子设备中的应用在运行时,需要进行内存申请以保证应用的正常运行,然而,当前的应用种类越来越多,对电子设备的需求也越来越高,相应的引发出了多种内存问题,例如内存泄漏问题。

2、目前,当电子设备检测到发生内存泄漏时,会通过虚拟机打开抓栈开关,通过抓栈来解析申请内存的应用的信息(或线程信息),进而再完成内存申请过程。然而,相关技术在抓栈过程中会引发应用卡顿现象。


技术实现思路

1、本技术提供了一种内存申请方法和电子设备,可以减少抓栈过程中的应用卡顿现象。

2、第一方面,本技术提供一种内存申请方法,该方法由电子设备执行,包括:在检测到应用申请内存的请求的情况下,若已开启抓栈功能,则根据配置的抓栈参数确定是否需要进行抓栈;若需要进行抓栈,则申请持锁并抓栈,以及完成内存申请;若不需要进行抓栈,则完成内存申请。

3、其中,电子设备中的应用在显示页面的过程中,主线程会频繁的进行内存申请以绘制页面。若电子设备检测到应用申请内存的请求,则可以向应用分配内存以及调用抓栈方法;在调用抓栈方法的过程中,可以判断当前是否已打开抓栈开关(即是否开启抓栈功能),以确定是否需要执行抓栈过程。

4、如果没有开启抓栈功能,则不需要进行抓栈。

5、如果开启抓栈功能,则可以再根据配置的抓栈参数确定是否需要抓栈。可以理解,本技术中的抓栈参数是用于进行抓栈过滤,即过滤掉不需要抓栈的情况。由此,可以减少申请持锁的次数,进而减少进入等待锁的状态的概率,相应的减少了抓栈过程中的应用卡顿现象。

6、结合第一方面,在第一方面的有些实现方式中,上述抓栈参数包括第一阈值和/或第二阈值,上述根据配置的抓栈参数确定是否需要进行抓栈,包括:根据应用所申请内存的大小与第一阈值之间的大小关系,和/或,应用所申请内存的次数与第二阈值之间的大小关系,确定是否需要进行抓栈。

7、其中,第一阈值可以为采样内存阈值,第二阈值可以为采样频率阈值,电子设备可以根据该两个阈值确定是否需要抓栈。

8、在一些实现方式中,上述根据应用所申请内存的大小与第一阈值之间的大小关系,和/或,应用所申请内存的次数与第二阈值之间的大小关系,确定是否需要进行抓栈,包括:若应用所申请内存的大小大于或者等于第一阈值,则确定需要进行抓栈;若应用所申请内存的大小小于第一阈值,则确定不需要进行抓栈。

9、即,在电子设备根据第一阈值确定是否需要抓栈的情况下,若应用所申请内存的大小大于或者等于第一阈值,则确定需要抓栈;若应用所申请内存的大小小于第一阈值,则确定不需要抓栈。例如,第一阈值可以为10kb,即应用所申请内存的大小大于或者等于10kb时需要抓栈,应用所申请内存的大小小于10kb时不需要抓栈。

10、在一些实现方式中,上述根据应用所申请内存的大小与第一阈值之间的大小关系,和/或,应用所申请内存的次数与第二阈值之间的大小关系,确定是否需要进行抓栈,包括:若应用所申请内存的次数大于或者等于第二阈值,则确定需要进行抓栈;若应用所申请内存的次数小于第二阈值,则确定不需要进行抓栈。

11、即,在电子设备根据第二阈值确定是否需要抓栈的情况下,若应用所申请内存的次数大于或者等于第二阈值,则确定需要抓栈;若应用所申请内存的次数小于第二阈值,则确定不需要抓栈。例如,第二阈值可以为1000次,即应用所申请内存的次数大于或者等于1000次时需要抓栈,应用所申请内存的次数小于1000次时不需要抓栈。

12、在一些实现方式中,上述根据应用所申请内存的大小与第一阈值之间的大小关系,和/或,应用所申请内存的次数与第二阈值之间的大小关系,确定是否需要进行抓栈,包括:在应用所申请内存的大小大于或者等于第一阈值的情况下,确定需要进行抓栈;在应用所申请内存的大小小于第一阈值的情况下,若应用所申请内存的次数大于或者等于第二阈值,则确定需要进行抓栈,若应用所申请内存的次数小于第二阈值,则确定不需要进行抓栈。

13、即,在电子设备根据第一阈值和第二阈值共同确定是否需要抓栈的情况下,若应用所申请内存的大小大于或者等于第一阈值,则确定需要抓栈;若应用所申请内存的大小小于第一阈值且应用所申请内存的次数大于或者等于第二阈值,则确定需要抓栈;若应用所申请内存的大小小于第一阈值且应用所申请内存的次数小于第二阈值,则确定不需要抓栈。例如,第一阈值可以为10kb,第二阈值可以为1000次,若应用所申请内存的大小大于或者等于10kb,则不再判断其申请内存的次数,直接确定需要抓栈;若应用所申请内存的大小小于10kb,则需要再根据其申请内存的次数进行判断,应用所申请内存的次数大于或者等于1000次时需要抓栈,应用所申请内存的次数小于1000次时不需要抓栈。

14、上述实现方式中,电子设备结合第一阈值和/或第二阈值对抓栈过程进行过滤,以减少抓栈次数,进而减少申请持锁的次数,从而减少了抓栈过程中的应用卡顿现象。

15、结合第一方面,在第一方面的有些实现方式中,在应用所申请内存的大小小于第一阈值,且应用所申请内存的次数大于或者等于第二阈值的情况下,上述方法还包括:重置应用所申请内存的次数为0次。

16、在该实现方式中,如果应用所申请内存的大小小于第一阈值,且应用所申请内存的次数大于或者等于第二阈值,即需要进行抓栈,此时电子设备还可以将应用所申请内存的次数重置为0,以重新累计应用所申请内存的次数。

17、结合第一方面,在第一方面的有些实现方式中,在检测到应用发生内存泄漏的情况下,上述方法还包括:配置抓栈参数,以及根据抓栈参数开启抓栈功能。

18、通常情况下,电子设备是在发生内存泄漏的情况下才进行抓栈,以通过栈信息分析内存问题,因此,在检测到应用发生内存泄漏的情况下,电子设备可以开启抓栈功能(即打开抓栈开关)。本技术中,电子设备在开启抓栈功能时可以配置抓栈参数,以供后续根据该抓栈参数来确定是否进行抓栈。

19、结合第一方面,在第一方面的有些实现方式中,上述若需要进行抓栈,则申请持锁并抓栈,以及完成内存申请,包括:若需要进行抓栈,则申请获取锁;在获取锁成功的情况下,则进行持锁抓栈,以及完成内存申请;在未获取锁成功的情况下,则完成内存申请。

20、该实现方式中,在需要进行抓栈的情况下,电子设备可以尝试获取锁,如果当前锁空闲,则可以获取成功,即可进行持锁抓栈过程,以完成内存申请;如果当前锁被占用,则没有尝试成功,此时不再等待锁,即完成内存申请,以进一步减少等待锁的状态。

21、结合第一方面,在第一方面的有些实现方式中,上述根据配置的抓栈参数确定是否需要进行抓栈,包括:若抓栈参数为初始值,则申请持锁并抓栈;若抓栈参数不为初始值,则根据抓栈参数确定是否需要进行抓栈。

22、其中,在抓栈参数包括第一阈值和第二阈值的情况下,该初始值可以为第一阈值和第二阈值的初始值,示例性地,第一阈值和第二阈值的初始值均可以为0,也即相当于没有对抓栈参数进行配置。那么,若电子设备没有对抓栈参数进行配置,则直接申请持锁抓栈;若电子设备已对抓栈参数进行配置,即第一阈值和第二阈值不为初始值,则可以根据抓栈参数确定是否需要进行抓栈。由此,电子设备可以减少申请持锁的次数,进而减少进入等待锁的状态的概率,相应的减少了抓栈过程中的应用卡顿现象。

23、第二方面,本技术提供一种装置,该装置包含在电子设备中,该装置具有实现上述第一方面及上述第一方面的可能实现方式中电子设备行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块或单元。例如,接收模块或单元、处理模块或单元等。

24、第三方面,本技术提供一种电子设备,电子设备包括:处理器、存储器和接口;处理器、存储器和接口相互配合,使得电子设备执行第一方面的技术方案中任意一种方法。

25、第四方面,本技术提供一种芯片,包括处理器。处理器用于读取并执行存储器中存储的计算机程序,以执行第一方面及其任意可能的实现方式中的方法。

26、可选地,芯片还包括存储器,存储器与处理器通过电路或电线连接。

27、进一步可选地,芯片还包括通信接口。

28、第五方面,本技术提供一种计算机可读存储介质,计算机可读存储介质中存储了计算机程序,当计算机程序被处理器执行时,使得该处理器执行第一方面的技术方案中任意一种方法。

29、第六方面,本技术提供一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码在电子设备上运行时,使得该电子设备执行第一方面的技术方案中任意一种方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1