一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

应用内的内存管理方法、装置、电子设备和可读存储介质与流程

2022-06-01 05:48:21 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,具体涉及应用内的内存管理方法、装置、电子设备和可读存储介质。


背景技术:

2.随着计算设备的普及。计算设备上运行的应用在使用过程中会消耗内存。在一些情况下,计算机或移动终端上的各种应用在长时间运行的过程中,面临内存过高,从而被系统强制退出的问题,影响应用的使用效果。因此,如何保证计算设备的应用在运行过程中不被强制退出而又可以使应用内存处于健康平稳状态,是越来越急迫需要解决的问题。


技术实现要素:

3.为了解决相关技术中的问题,本公开实施例提供应用内的内存管理方法、装置、电子设备、可读存储介质和计算机程序产品。
4.第一方面,本公开实施例中提供了一种应用内的内存管理方法,所述应用包括内存管理模块,所述方法包括通过所述内存管理模块执行以下步骤:
5.接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项;
6.基于注册的事件、条件和内存操作项生成内存管理策略,其中,在所述内存管理策略中设置触发内存管理操作的事件和与事件对应的至少一个内存操作项;
7.基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作。
8.结合第一方面,本公开在第一方面的第一种实现方式中,在所述内存管理策略中设置有内存管理操作的触发时机,所述触发时机包括触发内存管理操作的事件,或者包括触发内存管理操作的事件和表示用户特征的条件,
9.其中,所述基于所述内存管理策略,响应于触发内存管理操作的事件发生触发与所述事件对应的内存操作项执行,包括:
10.基于所述内存管理策略中设置的触发时机触发对与所述事件对应的内存操作项的操作。
11.结合第一方面,本公开在第一方面的第二种实现方式中,所述内存操作项包括进行内存操作的动作和被进行内存操作的内存操作对象。
12.结合第一方面,本公开在第一方面的第三种实现方式中,,所述触发内存管理操作的事件包括触发降低内存占用的操作的第一类型事件和触发恢复内存占用的操作的第二类型事件,
13.其中,所述基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作,包括:
14.基于所述内存管理策略,响应于所述第一类型事件触发与所述事件对应的内存操
作项的降低内存占用操作,或者
15.基于所述内存管理策略,响应于所述第二类型事件触发与所述事件对应的已执行降低内存占用操作的内存操作项的恢复内存占用操作。
16.结合第一方面的第三种实现方式,本公开在第一方面的第四种实现方式中,所述基于所述内存管理策略,响应于所述第二类型事件触发与所述事件对应的已执行降低内存占用操作的内存操作项的恢复内存占用操作,包括:
17.基于所述内存管理策略,响应于所述第二类型事件,确定与所述事件对应的已执行降低内存占用操作的内存操作项的引用计数是否为零;
18.根据与所述事件对应的已执行降低内存占用操作的内存操作项的引用计数为零,将已执行降低内存占用操作的内存操作项恢复为初始状态。
19.结合第一方面的第三种实现方式,本公开在第一方面的第五种实现方式中,所述接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项,包括:
20.接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和由用于对内存操作对象进行操作的内存操作项构成的内存操作项组,
21.其中,所述基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作,包括:
22.基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项组的操作。
23.结合第一方面的第五种实现方式,本公开在第一方面的第六种实现方式中,所述方法还包括:
24.基于所述内存管理策略,响应于在先发生的第一类型事件之后的另一第一类型事件发生,在与在先发生的第一类型事件对应的内存操作项组中增加至少一个内存操作项。
25.结合第一方面、第一方面的第一种实现方式至第六种实现方式任一项,本公开在第一方面的第七种实现方式中,所述接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项,包括:
26.响应于进入所述应用的应用场景,接收针对所述应用场景的事件注册请求,以响应于所述事件注册请求注册触发针对所述应用场景的内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项。
27.结合第一方面、第一方面的第一种实现方式至第六种实现方式任一项,本公开在第一方面的第八种实现方式中,所述表示用户特征的条件包括表示运行所述应用的计算设备的设备信息,其中,所述设备信息包括使所述应用在所述计算设备的操作系统中达到就被强制退出的内存占用阈值。
28.第二方面,本公开实施例中提供了一种应用内的内存管理装置,所述装置包括:
29.事件注册模块,被配置为接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项;
30.内存管理策略生成模块,被配置为基于注册的事件、条件和内存操作项生成内存管理策略,其中,在所述内存管理策略中设置触发内存管理操作的事件和与事件对应的至少一个内存操作项;
31.内存操作模块,被配置为基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作。
32.第三方面,本公开实施例中提供了一种导航应用内的内存管理方法,所述导航应用包括导航内存管理模块,所述方法包括通过所述导航内存管理模块执行以下步骤:
33.接收导航应用的导航事件注册请求,以响应于所述导航事件注册请求注册触发内存管理操作的导航应用事件、表示导航应用的用户特征的导航应用条件和用于对导航应用内存操作对象进行操作的导航内存操作项;
34.基于注册的导航应用事件、导航应用条件和导航内存操作项生成导航内存管理策略,其中,在所述导航内存管理策略中设置触发内存管理操作的导航应用事件和与导航应用事件对应的至少一个导航内存操作项;
35.基于所述导航内存管理策略,响应于触发内存管理操作的导航应用事件发生触发对与所述导航应用事件对应的导航内存操作项的操作。
36.第四方面,本公开实施例中提供了一种电子设备,包括存储器和处理器;其中,
37.所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如第一方面、第一方面的第一种实现方式到第八种实现方式、第三方面任一项所述的方法。
38.第五方面,本公开实施例中提供了一种可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现如第一方面、第一方面的第一种实现方式到第八种实现方式、第三方面任一项所述的方法。
39.第六方面,本公开实施例中提供了一种计算机程序产品,包括计算机指令,该计算机指令被处理器执行时实现如第一方面、第一方面的第一种实现方式到第八种实现方式、第三方面任一项所述的方法。
40.本公开实施例提供的技术方案可以包括以下有益效果:
41.根据本公开实施例提供的技术方案,通过所述应用包括内存管理模块,所述方法包括通过所述内存管理模块执行以下步骤:接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项;基于注册的事件、条件和内存操作项生成内存管理策略,其中,在所述内存管理策略中设置触发内存管理操作的事件和与事件对应的至少一个内存操作项;基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作,可以注册使得计算设备中运行的应用得以进行内存管理的事件、条件和内存操作项,保证应用在运行过程中使应用的内存处于健康平稳状态,进而在应用所在的操作系统中稳定运行,避免应用被操作系统强制退出。而且,针对不同的事件注册请求,可以基于不同的事件、表示用户特征的条件和内存操作项,智能化、动态地管理内存,达到内存优化效果。而且,表示用户特征的条件可以基于用户特征的不同保证内存管理策略的千人千面。
42.根据本公开实施例提供的技术方案,通过在所述内存管理策略中设置有内存管理
操作的触发时机,所述触发时机包括触发内存管理操作的事件,或者包括触发内存管理操作的事件和表示用户特征的条件,其中,所述基于所述内存管理策略,响应于触发内存管理操作的事件发生触发与所述事件对应的内存操作项执行,包括:基于所述内存管理策略中设置的触发时机触发对与所述事件对应的内存操作项的操作,可以在不同的触发时机,触发对内存操作项的操作,从而智能化、动态地管理内存,达到内存优化效果。
43.根据本公开实施例提供的技术方案,通过所述内存操作项包括进行内存操作的动作和被进行内存操作的内存操作对象,可以执行对内存操作项的操作,达到智能化、动态地管理内存,达到内存优化效果。
44.根据本公开实施例提供的技术方案,通过所述触发内存管理操作的事件包括触发降低内存占用的操作的第一类型事件和触发恢复内存占用的操作的第二类型事件,其中,所述基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作,包括:基于所述内存管理策略,响应于所述第一类型事件触发与所述事件对应的内存操作项的降低内存占用操作,或者基于所述内存管理策略,响应于所述第二类型事件触发与所述事件对应的已执行降低内存占用操作的内存操作项的恢复内存占用操作,可以基于内存管理策略,针对第一类型事件或第二类型事件动态地管理内存,达到内存优化效果。
45.根据本公开实施例提供的技术方案,通过所述基于所述内存管理策略,响应于所述第二类型事件触发与所述事件对应的已执行降低内存占用操作的内存操作项的恢复内存占用操作,包括:基于所述内存管理策略,响应于所述第二类型事件,确定与所述事件对应的已执行降低内存占用操作的内存操作项的引用计数是否为零;根据与所述事件对应的已执行降低内存占用操作的内存操作项的引用计数为零,将已执行降低内存占用操作的内存操作项恢复为初始状态,可以基于内存管理策略,针对第二类型事件动态地管理内存,达到内存优化效果,而且,可以通过内存操作项的引用计数防止内存操作项被错误地恢复。
46.根据本公开实施例提供的技术方案,通过所述接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项,包括:接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和由用于对内存操作对象进行操作的内存操作项构成的内存操作项组,其中,所述基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作,包括:基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项组的操作,可以成组的管理内存操作项,并且事件可以触发包括多个内存操作项的内存操作项组的操作,实现了高效率的内存管理操作。
47.根据本公开实施例提供的技术方案,通过基于所述内存管理策略,响应于在先发生的第一类型事件之后的另一第一类型事件发生,在与在先发生的第一类型事件对应的内存操作项组中增加至少一个内存操作项,可以在确定内存管理策略之后依然动态调整已经存在的内存操作项组,从而动态地管理内存,达到内存优化效果。
48.根据本公开实施例提供的技术方案,通过所述接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项,包括:响应于进入所述应用的应用场景,接收针对所述应用
场景的事件注册请求,以响应于所述事件注册请求注册触发针对所述应用场景的内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项,可以针对应用场景注册使得计算设备中运行的应用得以进行内存管理的事件、条件和内存操作项,保证应用在特定应用场景中使应用的内存处于健康平稳状态,进而在应用所在的操作系统中稳定运行,避免应用被操作系统强制退出。而且,针对不同的事件注册请求,可以在不同的应用场景,基于不同的事件、条件和内存操作项智能化、动态地管理内存,达到不同的内存优化效果。
49.根据本公开实施例提供的技术方案,通过所述表示用户特征的条件包括表示运行所述应用的计算设备的设备信息,其中,所述设备信息包括使所述应用在所述计算设备的操作系统中达到就被强制退出的内存占用阈值,可以保证在计算设备中运行的应用中使应用的内存处于健康平稳状态,避免应用被操作系统强制退出。
50.根据本公开实施例提供的技术方案,通过事件注册模块,被配置为接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项;内存管理策略生成模块,被配置为基于注册的事件、条件和内存操作项生成内存管理策略,其中,在所述内存管理策略中设置触发内存管理操作的事件和与事件对应的至少一个内存操作项;内存操作模块,被配置为基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作,可以注册使得计算设备中运行的应用得以进行内存管理的事件、条件和内存操作项,保证应用在运行过程中使应用的内存处于健康平稳状态,进而在应用所在的操作系统中稳定运行,避免应用被操作系统强制退出。而且,针对不同的事件注册请求,可以基于不同的事件、表示用户特征的条件和内存操作项,智能化、动态地管理内存,达到内存优化效果。而且,表示用户特征的条件可以基于用户特征的不同保证内存管理策略的千人千面。
51.根据本公开实施例提供的技术方案,通过所述导航应用包括导航内存管理模块,所述方法包括通过所述导航内存管理模块执行以下步骤:接收导航应用的导航事件注册请求,以响应于所述导航事件注册请求注册触发内存管理操作的导航应用事件、表示导航应用的用户特征的导航应用条件和用于对导航应用内存操作对象进行操作的导航内存操作项;基于注册的导航应用事件、导航应用条件和导航内存操作项生成导航内存管理策略,其中,在所述导航内存管理策略中设置触发内存管理操作的导航应用事件和与导航应用事件对应的至少一个导航内存操作项;基于所述导航内存管理策略,响应于触发内存管理操作的导航应用事件发生触发对与所述导航应用事件对应的导航内存操作项的操作,可以注册使得计算设备中运行的导航应用得以进行内存管理的导航应用事件、导航应用条件和导航内存操作项,保证导航应用在运行过程中使导航应用的内存处于健康平稳状态,进而在导航应用所在的操作系统中稳定运行,避免导航应用被操作系统强制退出。而且,针对不同的导航事件注册请求,可以基于不同的导航应用事件、表示用户特征的导航应用条件和导航内存操作项,智能化、动态地管理内存,达到内存优化效果。而且,表示用户特征的导航应用条件可以基于用户特征的不同保证导航内存管理策略的千人千面。
52.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
53.结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中:
54.图1示出根据本公开一实施方式的应用内的内存管理方法的流程图;
55.图2示出根据本公开一个实施例的应用内的内存管理方法应用于导航应用的示例性实施场景的示意图;
56.图3示出根据本公开一个实施例的应用内的内存管理方法应用于导航应用的一个实施方式的示例性流程图;
57.图4示出执行图3所示的智能调度内存操作项的一个示例性的事件注册中心的工作流程示意图;
58.图5示出根据本公开一实施方式的应用内的内存管理装置的结构框图;
59.图6示出根据本公开一实施方式的电子设备的结构框图;
60.图7是适于用来实现根据本公开各实施方式的方法的计算机系统的结构示意图。
具体实施方式
61.下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
62.在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的标签、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他标签、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
63.另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的标签可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
64.在本公开中,对用户信息或用户数据的获取均为经用户授权、确认,或由用户主动选择的操作。用户可以是个人、营利性机构、非赢利性机构等各种人或组织。
65.在相关技术中,在计算设备的操作系统执行内存管理时,一般是针对运行的应用进行内存管理,即,将不再运行或者占用内存过大的应用强制退出。应用被操作系统强制退出会影响应用使用效果。
66.为了解决上述问题,本公开提出应用内的内存管理方法、装置、电子设备、可读存储介质和计算机程序产品。根据本公开实施例,在计算设备中运行的应用的使用过程中,注册使得应用得以进行内存管理的事件(本公开实施例中可以称作action)、条件(本公开实施例中可以称作condition)和内存操作项(本公开实施例中可以称作feature),从而构成内存管理策略,通过基于内存管理策略触发对与事件对应的内存操作项的操作,以对应用进行内存占用的管理。在本公开的一个实施例中,可以基于内存管理策略,通过触发降低内存占用的操作的第一类型事件,来触发内存操作项以降低应用的内存占用,保证应用内存处于健康平稳的状态,避免应用被操作系统强制退出。在本公开的一个实施例中,内存管理方法在应用内部由应用的内存管理模块执行,这种内存管理方式在保证应用自身的运行稳定,以及精细化地管理应用的内存占用方面相较于操作系统级的内存管理具有显著优势。
67.在本公开的一个实施例中,内存操作项也可以被称作操作项,指的是内存优化的
最小单元,执行后可释放一定的内存。另外,还可以基于内存管理策略,通过触发恢复内存占用的操作的第二类型事件对已经执行降低应用的内存占用操作的内存操作项进行恢复,即,恢复内存占用,保证应用的可用性。根据本公开实施例的应用内的内存管理方法可以做到智能化、实时性、动态性、有效性、以及千人千面的特性,从而达到较佳的内存优化效果。
68.应该注意,以上讨论的应用内的内存管理方法的实施场景可以是各种计算设备运行应用时的场景,不限于某一种特定设备、某一种特定应用或某一种特定场景。
69.在本公开的一个实施例中,本公开实施例讨论的应用内的内存管理方法针对的是在操作系统中运行的应用自身执行的用于内存管理的应用内的内存管理方法,而非由操作系统执行的内存管理操作。不同于计算设备的操作系统在执行内存管理时通过对应用进行强制退出来保证计算设备的内存的健康平稳,本公开实施例的应用内的内存管理方法可以通过在应用中建立内存管理策略,根据注册的事件和条件来对与事件关联的内存操作项进行管理,以保证应用自身的内存状态的健康平稳。这样可以既保证应用的运行,又防止应用占用超过必要限度的内存导致的易于被操作系统强制退出的情况出现。
70.以下参照图1描述根据本公开一实施方式的应用内的内存管理方法的示例。
71.图1示出根据本公开一实施方式的应用内的内存管理方法的流程图。在如图1所示应用内的内存管理方法中,应用包括内存管理模块,内存管理模块执行以下步骤s101、s102、s103。
72.在步骤s101中,接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项。
73.在步骤s102中,基于注册的事件、条件和内存操作项生成内存管理策略,其中,在所述内存管理策略中设置触发内存管理操作的事件和与事件对应的至少一个内存操作项。
74.在步骤s103中,基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作。
75.在本公开的一个实施例中,应用指的是在计算设备的操作系统中运行的应用程序,例如,在电脑的操作系统上运行的办公应用程序、游戏应用程序等,或者在移动终端的操作系统上运行的导航应用程序、购物应用程序等。本公开实施例提及的应用内的内存管理方法是针对应用执行或在应用中执行的方法。
76.在本公开的一个实施例中,应用内的内存管理方法可以基于事件(action)、条件(condition)、内存操作项(feature)管理内存,这种管理方式可以被称作acf(即,action、condition、feature的首字母组合)管理方式。在本公开的一个实施例中,执行acf管理方式的模块可以被称作内存管理模块或者acf管理中心(acf manager center)或者acf事件注册中心,可以用于基于事件(action)、条件(condition)、确定内存操作项(feature),进而生成内存管理策略,以响应于事件发生触发降低内存占用的操作、或者恢复已执行降低内存占用的操作的内存操作项至初始状态等操作。
77.在本公开的一个实施例中,应用的事件注册请求可以是应用的进场景事件,即,在应用中进入一个场景的事件。场景可以是应用在运行过程中出现的各种场景,例如,对于导航应用,场景可以包括行中导航场景、家人地图场景、骑行导航场景、步行导航场景、小视频场景等等。在执行根据本公开实施例的应用内的内存管理方法情况下,进入一个场景的事
件会触发注册事件(注册的事件可以是多个事件,其中包括进场景事件)和表示用户特征的条件(注册的条件可以是多个条件),进入一个场景的事件还会触发注册与注册的事件关联或者与注册的事件和注册的条件二者关联的内存操作项。
78.在本公开的一个实施例中,触发内存管理操作的事件可以指的是应用的进场景事件、出场景事件、切前台事件、切后台事件、收低内存警告事件、收低电量警告事件等事件。出场景事件指的是在应用中退出当前场景的事件。切前台事件指的是在应用中将处于后台的场景切换到前台的事件。切后台事件指的是在应用中将当前场景切换到后台的事件。收低内存警告事件指的是在应用中收到操作系统对内存不足的警告的事件。收低电量警告事件指的是在应用中收到操作系统对低电量的警告的事件。在本公开的一个实施例中,收到操作系统的内存警告和低电量警告可以通过操作系统为应用提供的接口进行接收。
79.在本公开的一个实施例中,可以响应于事件注册请求注册表示用户特征的条件。条件与事件不同,条件表现的是应用的用户的特征,例如,用户的计算设备(应用所在的计算设备)的类型、用户操作应用的使用习惯、用户所在地、用户出行方式等特性均可以作为条件。在执行本公开实施例的应用内的内存管理方法时,考虑条件进行内存管理可以使得应用内的内存管理方法的执行策略千人千面,智能化地实现内存管理。在本公开的一个实施例中,用户特征的获取方式可以从相关技术中获知,本公开对此不作赘述。
80.在本公开的一个实施例中,用于对内存操作对象进行操作的内存操作项(也可以简称为操作项)可以指的是在应用中设置的对应用中的涉及内存占用的对象进行操作的项目,例如,关闭动画操作项、脚本垃圾回收操作项等等各种内存操作项。
81.在本公开的一个实施例中,内存管理策略中设置触发内存管理操作的事件和与事件对应的至少一个内存操作项。内存管理策略指的是在注册事件会触发哪个内存操作项的降低内存占用操作或恢复内存占用操作。在本公开的一个实施例中,在事件和条件任一项出现不同的情况下,响应于事件注册请求注册的内存操作项通常会不同。在本公开的一个实施例中,在应用场景、事件和条件任一项出现不同的情况下,内存管理策略中设置内存操作项通常也会不同。因此,本公开实施例的应用内的内存管理方法生成的内存管理策略是千人千面的、智能的。
82.根据本公开实施例提供的技术方案,通过所述应用包括内存管理模块,所述方法包括通过所述内存管理模块执行以下步骤:接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项;基于注册的事件、条件和内存操作项生成内存管理策略,其中,在所述内存管理策略中设置触发内存管理操作的事件和与事件对应的至少一个内存操作项;基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作,可以注册使得计算设备中运行的应用得以进行内存管理的事件、条件和内存操作项,保证应用在运行过程中使应用的内存处于健康平稳状态,进而在应用所在的操作系统中稳定运行,避免应用被操作系统强制退出。而且,针对不同的事件注册请求,可以基于不同的事件、表示用户特征的条件和内存操作项,智能化、动态地管理内存,达到内存优化效果。而且,表示用户特征的条件可以基于用户特征的不同保证内存管理策略的千人千面。
83.在本公开的一个实施例中,在内存管理策略中设置有内存管理操作的触发时机,
所述触发时机包括触发内存管理操作的事件,或者包括触发内存管理操作的事件和表示用户特征的条件。在此情况下,步骤s103,包括:基于内存管理策略中设置的触发时机触发对与事件对应的内存操作项的操作。
84.在本公开的一个实施例中,内存管理操作的触发时机指的是在什么情况下触发内存管理操作。在本公开的一个实施例中,触发时机这一概念并仅不限于触发内存管理操作的事件的发生,还可以包括注册的条件。例如,某一内存管理操作的触发时机可以仅包括进入某一特定应用场景的事件的发生,或者,某一内存管理操作的触发时机可以包括进入某一特定应用场景的事件的发生以及用户使用当前应用的习惯这一条件二者。即,内存管理操作的触发时机可以指的是在某一条件下特定事件的发生。
85.根据本公开实施例提供的技术方案,通过在所述内存管理策略中设置有内存管理操作的触发时机,所述触发时机包括触发内存管理操作的事件,或者包括触发内存管理操作的事件和表示用户特征的条件,其中,所述基于所述内存管理策略,响应于触发内存管理操作的事件发生触发与所述事件对应的内存操作项执行,包括:基于所述内存管理策略中设置的触发时机触发对与所述事件对应的内存操作项的操作,可以在不同的触发时机,触发对内存操作项的操作,从而智能化、动态地管理内存,达到内存优化效果。
86.在本公开的一个实施例中,触发内存管理操作的事件包括触发降低内存占用的操作的第一类型事件和触发恢复内存占用的操作的第二类型事件。在此情况下,步骤s103包括:基于内存管理策略,响应于第一类型事件触发与事件对应的内存操作项的降低内存占用操作,或者基于内存管理策略,响应于第二类型事件触发与事件对应的已执行降低内存占用操作的内存操作项的恢复内存占用操作。
87.在本公开的一个实施例中,尽管在内存管理策略中设置触发降低内存占用的操作的第一类型事件和与第一类型事件对应的内存操作项,但是应该理解,在一些情况下,第一类型事件并非是触发内存操作项的降低内存占用操作的唯一因素。即,第一类型事件的发生作为内存操作项的降低内存占用操作的触发时机的一部分,触发时机指的是在特定条件下发生第一类型事件。例如,在条件是用户使用的计算设备是计算性能达到第一标准的计算设备时,特定的第一类型事件的发生触发对特定的内存操作项的降低内存占用操作。又例如,在条件是用户使用的计算设备是计算性能达到第二标准的计算设备时,同样的特定的第一类型事件的发生不会触发前述对特定的内存操作项的降低内存占用操作,而是触发对另一内存操作项的降低内存占用操作。同理,在一些情况下,第二类型事件并非是触发内存操作项的恢复内存占用操作的唯一因素。即,第二类型事件的发生作为内存操作项的恢复内存占用操作的触发时机的一部分,触发时机指的是在特定条件下发生第二类型事件。因此,内存管理策略中可以设置有各个内存操作项的操作的触发时机。
88.在本公开的一个实施例中,第一类型事件指的是请求注册的事件中会触发对内存操作项进行降低内存占用操作的事件,例如,切后台事件、收低内存警告事件、收低电量警告事件等事件。在本公开的一个实施例中,进场景事件也可以被认为是第一类型事件。
89.在本公开的一个实施例中,第二类型事件指的是请求注册的事件中会触发对内存操作项进行内存占用恢复操作的事件,例如,切前台事件、出场景事件等事件。例如,切前台事件可以触发将与切前台事件对应的已被执行降低内存占用操作的内存操作项恢复为初始状态。例如,出场景事件可以触发将与出场景事件对应的已被执行降低内存占用操作的
内存操作项恢复为初始状态。
90.根据本公开实施例提供的技术方案,通过所述触发内存管理操作的事件包括触发降低内存占用的操作的第一类型事件和触发恢复内存占用的操作的第二类型事件,其中,所述基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作,包括:基于所述内存管理策略,响应于所述第一类型事件触发与所述事件对应的内存操作项的降低内存占用操作,或者基于所述内存管理策略,响应于所述第二类型事件触发与所述事件对应的已执行降低内存占用操作的内存操作项的恢复内存占用操作,可以基于内存管理策略,针对第一类型事件或第二类型事件动态地管理内存,达到内存优化效果。
91.在本公开的一个实施例中,所述基于所述内存管理策略,响应于第二类型事件触发与所述事件对应的已执行降低内存占用操作的内存操作项的恢复内存占用操作,包括:基于所述内存管理策略,响应于所述第二类型事件,确定与所述事件对应的已执行降低内存占用操作的内存操作项的引用计数是否为零;根据与所述事件对应的已执行降低内存占用操作的内存操作项的引用计数为零,将已执行降低内存占用操作的内存操作项恢复为初始状态。
92.在本公开的一个实施例中,同一个内存操作项可能被不同的第一类型事件触发。在响应于第二类型事件恢复已执行降低内存占用操作的内存操作项时,该特定内存操作项有可能已被另一第一类型事件触发执行降低内存占用操作。有鉴于此,需要为内存操作项设置引用计数,只有引用计数为0时,才表示该内存操作项未被触发执行降低内存占用操作,因此可以响应于第二类型事件恢复为初始状态。这样可以准确地、动态地进行内存操作项组的恢复,防止误操作。
93.根据本公开实施例提供的技术方案,通过所述基于所述内存管理策略,响应于所述第二类型事件触发与所述事件对应的已执行降低内存占用操作的内存操作项的恢复内存占用操作,包括:基于所述内存管理策略,响应于所述第二类型事件,确定与所述事件对应的已执行降低内存占用操作的内存操作项的引用计数是否为零;根据与所述事件对应的已执行降低内存占用操作的内存操作项的引用计数为零,将已执行降低内存占用操作的内存操作项恢复为初始状态,可以基于内存管理策略,针对第二类型事件动态地管理内存,达到内存优化效果,而且,可以通过内存操作项的引用计数防止内存操作项被错误地恢复。
94.在本公开的一个实施例中,步骤s101包括:接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和由用于对内存操作对象进行操作的内存操作项构成的内存操作项组,其中,所述基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作,包括:基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项组的操作。
95.在本公开的一个实施例中,响应于事件注册请求注册的与事件关联的内存操作项可以被称作是通用操作项。在本公开的一个实施例中,通用操作项可以是多个内存操作项,可以认为与事件关联的注册的内存操作项构成了一个内存操作项池。在本公开的一个实施例中,可以注册内存操作项组,作为响应于事件发生而被触发的由至少一个内存操作项构成的内存操作项组。注册的多个事件中任一事件对应的内存操作项组均由通用操作项中的
至少一个内存操作项构成,即,从内存操作项池选择一部分内存操作项构成内存操作项组,
96.在本公开的一个实施例中,接收到应用的事件注册请求,则向应用声明事件的触发与内存操作项之间的对应关系。在本公开的一个实施例中,在应用中,可以响应于一个事件的发生触发对一个或多个内存操作项的管理。在此情况下,可以将一个事件触发的多个内存操作项设置为一个内存操作项组,即,一个事件的发生会整体上触发一个内存操作项组中的各个内存操作项的降低内存占用操作,或者一个事件的发生会整体上触发一个已执行降低内存占用操作的内存操作项组中的各个内存操作项恢复初始状态,例如,恢复已被执行降低内存占用操作的功能的内存占用,或者说,恢复被关闭或被释放或被清理的已被执行降低内存占用操作的功能。在本公开的一个实施例中,不同的事件可能触发同一内存操作项的管理,或者说,不同事件触发的不同的内存操作项组中可以具有同一内存操作项。换言之,不同的内存操作项组可以包含(引用)同一内存操作项。
97.根据本公开实施例提供的技术方案,通过所述接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项,包括:接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和由用于对内存操作对象进行操作的内存操作项构成的内存操作项组,其中,所述基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作,包括:基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项组的操作,可以成组的管理内存操作项,并且事件可以触发包括多个内存操作项的内存操作项组的操作,实现了高效率的内存管理操作。
98.在本公开的一个实施例中,根据本公开实施例的应用内的内存管理方法还包括:基于所述内存管理策略,响应于在先发生的第一类型事件之后的另一第一类型事件发生,在与在先发生的第一类型事件对应的内存操作项组中增加至少一个内存操作项。
99.在本公开的一个实施例中,在第一类型事件的发生会触发对内存操作项组的降低内存占用操作的情况下,还可能在所述第一类型事件之后发生另一第一类型事件。例如,所述第一类型事件是进场景事件,其后发生的另一第一类型事件可以是切后台事件,因此,可以在与注册进场景事件时注册的内存操作项组中添加至少一个新的内存操作项。在本公开的一个实施例中,即使在已经生成内存管理策略的情况下,也可以调整与第一类型事件对应的内存操作项组,从而智能地、动态地管理内存。
100.根据本公开实施例提供的技术方案,通过基于所述内存管理策略,响应于在先发生的第一类型事件之后的另一第一类型事件发生,在与在先发生的第一类型事件对应的内存操作项组中增加至少一个内存操作项,可以在确定内存管理策略之后依然动态调整已经存在的内存操作项组,从而动态地管理内存,达到内存优化效果。
101.在本公开的一个实施例中,步骤s101包括:响应于进入所述应用的应用场景,接收针对所述应用场景的事件注册请求,以响应于所述事件注册请求注册触发针对所述应用场景的内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项。
102.在本公开的一个实施例中,应用场景可以指的是计算设备中的应用所运行的场景。例如,车载计算设备或便携终端上的导航应用运行的诸如行中导航场景、步行导航场景
等场景。例如,台式计算机或移动终端上的视频播放应用运行的例如倍速播放场景、后台播放场景等场景。例如,固定的监控设备或移动的监控设备的监控应用运行的诸如黑夜模式场景、快速扫描场景等场景。
103.在本公开的一个实施例中,注册事件、条件和和内存操作项可以指的是,在接收到事件注册请求后,根据本公开实施例的应用内的内存管理方法根据具体场景和进场景事件确定需要注册的事件、条件和内存操作项。从另一个角度讲,从针对特定应用场景的进场景事件开始可能发生的全部事件,直至针对该特定应用场景的出场景事件,均为响应于事件注册请求(进场景事件)注册的事件。
104.在本公开的一个实施例中,在不同的应用场景,注册事件请求是不同的进场景事件。在不同的应用场景,注册的事件、条件和内存操作项也会不同。因此,在不同的应用场景,注册的事件是针对所述应用场景的请求注册的事件,与事件关联的内存操作项是与事件关联的针对应用场景的内存操作项。这样,可以保证内存管理的智能性、动态性、有效性。
105.在本公开的一个实施例中,内存管理模块可以针对当前应用场景监听事件,换言之,检测内存管理策略中的设置事件是否发生。根据应当前用场景,响应于监听到的已注册的第一类型事件或第二类型事件的发生,对内存管理策略中设置的内存操作项组进行管理。在本公开的一个实施例中,管理的内存操作项组中的内存操作项可以是通用的内存操作项(内存操作项池)中的一部分或全部。
106.在本公开的一个实施例中,一个应用中的不同应用场景中的同一事件的内存操作项组可以相同也可以不同。例如,导航应用中的行中导航场景下的导航内存操作项组与导航应用中的小视频场景的导航内存操作项组可以完全不同,也可以部分相同。
107.根据本公开实施例提供的技术方案,通过所述接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项,包括:响应于进入所述应用的应用场景,接收针对所述应用场景的事件注册请求,以响应于所述事件注册请求注册触发针对所述应用场景的内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项,可以针对应用场景注册使得计算设备中运行的应用得以进行内存管理的事件、条件和内存操作项,保证应用在特定应用场景中使应用的内存处于健康平稳状态,进而在应用所在的操作系统中稳定运行,避免应用被操作系统强制退出。而且,针对不同的事件注册请求,可以在不同的应用场景,基于不同的事件、条件和内存操作项智能化、动态地管理内存,达到不同的内存优化效果。
108.在本公开的一个实施例中,表示用户特征的条件包括表示运行应用的计算设备的设备信息,其中,所述设备信息包括使所述应用在所述计算设备的操作系统中达到就被强制退出的内存占用阈值。
109.在本公开的一个实施例中,为了避免应用被操作系统强制退出,应用可以获取操作系统强制退出应用时应用所要达到的内存占用阈值。根据本公开实施例的应用内的内存管理方法可以在生成内存管理策略时考虑到这一内存占用阈值,执行降低内存占用的操作,使得应用的内存占用可以低于这一内存占用阈值,以避免应用被操作系统强制退出。内存占用阈值的表现形式可以根据操作系统的不同而不同,本公开对此不做限制。
110.根据本公开实施例提供的技术方案,通过所述表示用户特征的条件包括表示运行
所述应用的计算设备的设备信息,其中,所述设备信息包括使所述应用在所述计算设备的操作系统中达到就被强制退出的内存占用阈值,可以保证在计算设备中运行的应用中使应用的内存处于健康平稳状态,避免应用被操作系统强制退出。
111.以下参照图2描述根据本公开一个实施例的应用内的内存管理方法应用于导航应用的示例性实施场景。图2示出根据本公开一个实施例的应用内的内存管理方法应用于导航应用的示例性实施场景的示意图。
112.如图2所示,框201中示出了计算设备的操作系统中的导航应用内的多个应用场景,例如,行中导航、家人地图、骑行导航、步行导航、小视频等等。在本公开的实施例中,导航应用的应用场景众多,用户应用导航应用的方式也相差甚远,在此情况下导航应用的内存占用情况也由于应用场景的不同而呈现极大差别。例如,在导航应用的各种应用场景中,导航应用所在的计算设备可能开启屏幕使用,也可能关闭屏幕使用;可能需要开启3d立体渲染,也可能仅使用2d渲染;可能在静止状态下使用,也可能在高速行动状态下使用。本公开实施例的应用内的内存管理方法在应用于这种应用场景差别很大的导航应用时具备明显的优点,可以保证在计算设备中运行时使导航应用占用的内存处于健康平稳状态,避免应用被操作系统强制退出。
113.应该理解,本公开实施例虽然以导航应用为例讨论在应用内执行的内存管理方法,但是本公开实施例的应用内的内存管理方法不限于导航应用,还可以在任何其他计算设备运行的各类应用内执行,特别适合对于功能模块众多、内存需求大的应用。
114.如图2所示,框202表示响应于导航事件注册请求注册的事件(action),例如,进场景事件、出场景事件、切前台事件、切后台事件、收低内存警告事件、收低电量警告事件等等。这些响应于导航事件注册请求注册的事件可以被称为导航应用事件。在本公开的一个实施例中,这些导航应用事件中的一部分事件可能在其他应用中也存在,另一部分事件可能仅存在于导航应用而在其他应用中不存在。
115.如图2所示,框203表示事件、条件、操作项控制器(或称为acf controller),即,前述参照图1描述的内存管理模块,用于执行内存优化匹配机制,负责根据事件不同、条件不同,调度或管理对应的内存操作项。事件、条件、操作项控制器(或称为acf controller)也即前述acf管理中心(acf manager center)或者acf事件注册中心。在本公开的一个实施例中,事件、条件、操作项控制器在导航应用中可以被称作导航应用事件、导航应用条件、导航应用操作项控制器,也即导航内存管理模块。
116.如图2所示,框204表示导航内存管理策略中设置的各个导航内存操作项组,每个导航内存操作项组包括相应的导航内存操作项。图2中框204中的导航应用操作项组是导航应用中在行中导航场景中生成的导航内存管理策略中与各个事件对应的导航应用操作项组中的一部分示例。随着导航应用、导航应用场景等方面的复杂度增加,导航内存操作项组和其中的导航内存操作项可能会不断新增,以满足内存管理需要。
117.如图2所示,第一导航内存操作项组包括导航内存操作项:导航ajx gc、导航烟花效果、导航释放c卡、导航低显存模式、导航清渲染缓存、导航关抗锯齿、导航释放f卡。以下示例性地描述第一导航内存操作项组中的导航内存操作项。在本公开的一个示例中,该第一导航应用操作项组是响应于行中导航场景的进场景事件的发生而注册的导航内存操作项组。
118.导航ajx gc:执行导航应用中的js(javascript)的垃圾回收,释放js内存。
119.导航烟花效果:销毁导航应用中的首页节日烟花效果。
120.导航释放c卡:释放导航应用中的首页工具箱相关功能。
121.导航低显存模式:在导航应用中的当前应用场景减少渲染,地图会出现局部白块。
122.导航清渲染缓存:清空导航应用中由于地图渲染占用的内存。
123.导航关抗锯齿:使导航应用中的地图展示出锯齿效果,释放抗锯齿功能占用的内存。
124.导航释放f卡:销毁导航应用中的主图底部区域的业务。
125.在以上示例中,在导航应用中的行中导航场景中,基于所述导航内存管理策略,响应于监听到进场景事件,触发对上述第一导航内存操作项组的降低内存占用的操作,以释放或减少对相应内存的占用。
126.如图2所示,第二导航内存操作项组包括导航内存操作项:导航释放mapview、导航关路口大图、导航关闭建筑物、导航简易三维、导航关闭tmc、导航关闭poi。以下示例性地描述第二导航内存操作项组中的导航内存操作项。在本公开的一个示例中,该第二导航操作项组是响应于行中导航场景的切后台事件的发生而注册的导航内存操作项组。
127.导航释放mapview:停止导航应用中的地图绘制更新。
128.导航关路口大图:关闭导航应用中的导航到路口时的大图显示效果。
129.导航关闭建筑物:隐藏导航应用中的地图上的建筑物楼块。
130.导航简易三维:关闭导航应用中的三维模型,改成平面模型。
131.导航关闭tmc:导航应用中比例尺放大到10米时才会展示拥堵信息。
132.导航关闭poi:不显示导航应用中的地图上的poi兴趣点。
133.在以上示例中,在行中导航场景中,基于所述导航内存管理策略,响应于监听到切后台事件,触发对第二导航内存操作项组的降低内存占用的操作,以释放或减少对相应内存的占用。
134.以上参照图2示例性地描述了的导航应用内的内存管理方法的实施框架。以下通过示例性的表1描述根据本公开实施例的导航应用内的内存管理方法生成的导航内存管理策略。
135.表1
[0136][0137][0138]
如表1所示,在导航应用的行中导航场景中,基于获取到的请求注册的导航应用事件、与导航应用的用户相关的导航应用条件(表1中为设备等级)和与导航应用事件和导航应用条件关联的导航内存操作项生成导航内存管理策略。在导航内存管理策略中设置触发内存操作的导航应用事件、表示用户特征的导航应用条件和多个用于对导航内存操作项进行操作的导航内存操作项。对于同一事件,可能由于条件的不同导致对导航内存操作项的操作的触发时机不同。即,对于同一事件,由多个导航内存操作项构成的导航内存操作项组
也可能不同。例如,从表1可见,对于进入行中导航场景事件,一些导航内存操作项的触发时机仅为进入行中导航场景事件发生,另一些导航内存操作项的触发时机是进入行中导航场景事件发生并且运行导航应用的设备为低端机。在此情况下,在作为高端机的设备中的导航应用的进入行中导航场景事件发生时,内存操作项组可以仅包括feature_turnoff_fireworks导航操作项和feature_turnoff_notvavivui导航操作项。在此情况下,在作为低端机的设备中的导航应用的进入行中导航场景事件发生时,导航内存操作项组可以包括feature_turnoff_fireworks导航操作项、feature_turnoff_notvavivui导航操作项、feature_turnoff_anti-aliasing导航操作项、feature_turnon_lowmemorymode导航操作项、feature_turnoff_tmc导航操作项、feature_turnoff_buildingblock导航操作项、feature_release_fcard导航操作项、和feature_turnoff_simple3d导航操作项。
[0139]
如表1所示,内存操作项(导航内存操作项)可以被定义为包括三部分,即,feature、动作和内存操作对象(导航内存操作对象)。其中,feature是表示导航内存操作项的前缀,动作和导航内存操作对象为导航内存操作项如何进行内存操作的核心。例如,动作可以包括turnoff(关闭)、turnon(开启)、release(释放)、clear(清除)等。例如,导航内存操作对象可以包括某种服务、某种功能、某种效果、某种模式、某处内存占用等。在本公开的一个实施例中,导航内存操作项可以仅包括动作和导航内存操作对象。
[0140]
在本公开的一个实施例中,内存操作项包括进行内存操作的动作和被进行内存操作的内存操作对象。
[0141]
根据本公开实施例提供的技术方案,通过所述内存操作项包括进行内存操作的动作和被进行内存操作的内存操作对象,可以执行对内存操作项的操作,达到智能化、动态地管理内存,达到内存优化效果。
[0142]
如表1所示,在作为生成导航内存管理策略的基础的导航应用事件、导航应用条件和导航内存操作项中,导航应用事件包括:进入行中导航场景事件、低内存警告or低电量警告事件、切后台事件、进入车道级事件;导航应用条件(1表示是该种设备,0表示非该种设备)包括设备为低端设备、中端设备、高端设备。应该理解,在本公开的实施例中定义的低端设备、中端设备、高端设备仅仅是为了说明导航应用条件所列出的示例,其定义可能随着技术的发展而变得不同,因此,本公开对此不做具体描述。
[0143]
参照表1中的“描述”栏,导航内存操作项包括:
[0144]
用于关闭导航应用中的主图烟花服务的内存操作项feature_turnoff_fireworks;
[0145]
用于关闭导航应用中的非行中vui(语音用户界面)的内存操作项vuifeature_turnoff_notvavivui;
[0146]
用于关闭导航应用中的主图抗锯齿功能的导航内存操作项feature_turnoff_anti-aliasing;
[0147]
用于开启导航应用中的低显存模式的导航内存操作项feature_turnon_lowmemorymode;
[0148]
用于关闭导航应用中的tmc深度信息的导航内存操作项feature_turnoff_tmc;
[0149]
用于关闭导航应用中的建筑物楼块的导航内存操作项feature_turnoff_buildingblock;
[0150]
用于释放导航应用中的主图f卡的导航内存操作项feature_release_fcard;
[0151]
用于关闭导航应用中的简易三维的导航内存操作项feature_turnoff_simple3d;
[0152]
用于关闭显示导航应用中的地图poi的导航内存操作项feature_turnoff_mappoi;
[0153]
用于清除导航应用中的渲染引擎显存的导航内存操作项feature_clear_rendervideocache;
[0154]
用于清除导航应用中的渲染引擎后台显存的导航内存操作项feature_clear_renderbackgroundcache。
[0155]
如表1所示,在生成的导航内存管理策略中,在用户的设备为低端机的导航应用条件下,“进入行中导航场景”导航应用事件的发生触发的执行降低内存占用操作的导航内存操作项组可以包括导航内存操作项feature_turnoff_fireworks、feature_turnoff_notvavivui、feature_turnoff_anti-aliasing、feature_turnon_lowmemorymode、feature_turnoff_tmc、feature_turnoff_buildingblock、feature_release_fcard。在用户的设备为中端机或高端机的导航应用条件下,“进入行中导航场景”事件的发生触发的执行降低内存占用操作的导航内存操作项组可以包括导航内存操作项feature_turnoff_fireworks、feature_turnoff_notvavivui。即,从表1中的触发时机可以确定,对于不同的与导航应用的用户相关的条件,即使在同一导航应用的同一应用场景的同一事件情况下,该事件对应的导航内存操作项组也会不同。因此,需要基于获取到的导航请求注册的事件、与导航应用的用户相关的导航应用条件和与导航应用事件和导航应用条件关联的导航内存操作项生成导航内存管理策略。生成的导航内存管理策略根据导航应用条件的不同千人千面,实现了导航内存管理的智能化。
[0156]
如表1所示,在生成的导航内存管理策略中,在用户的设备为低端机的条件下,收到“低内存警告or低电量警告”事件触发的导航内存操作项组可以包括导航内存操作项feature_turnoff_tmc、feature_turnoff_buildingblock、feature_turnoff_mappoi。在用户的设备为中端机或高端机的条件下,收到“低内存警告or低电量警告”导航应用事件(在该触发时机)触发的导航内存操作项组可以包括导航内存操作项feature_turnoff_mappoi。
[0157]
如表1所示,在生成的导航内存管理策略中,无论用户设备是低端机、中端机还是高端机,“切后台”导航应用事件触发的导航内存操作项组可以包括导航内存操作项feature_turnoff_mappoi、feature_clear_rendervideocache、feature_clear_renderbackgroundcache。
[0158]
如表1所示,在生成的导航内存管理策略中,在用户的设备为低端机的导航应用条件下,“进入车道级”导航应用事件的发生(在该触发时机)触发降低导航内存占用操作的导航内存操作项feature_turnoff_mappoi。
[0159]
表1对根据本公开实施例的导航应用内的内存管理方法生成的导航内存管理策略给出了示例。本领域技术人员可以理解,表1所示的内容仅仅是示例。在本公开实施例的方案的实际实施中,各个导航应用场景的导航应用事件不限于表1所示的导航应用事件,与导航应用的用户相关的条件不限于表1所示的用户设备的等级,与导航应用事件和导航应用条件关联的导航内存操作项不限于表1所示的导航内存操作项,生成的导航内存管理策略
也不限于表1所示的导航内存管理策略。
[0160]
以下参照图3描述根据图1所示的应用内的内存管理方法应用于导航应用的一个实施方式的示例性流程图。图3示出根据本公开一个实施例的应用内的内存管理方法应用于导航应用的一个实施方式的示例性流程图。
[0161]
下面以计算设备的导航应用运行时的行中导航场景为例对该示例性流程做详细介绍。
[0162]
首先,开始进入行中导航场景,构造增强模式config配置(步骤3001),开启增强模式(步骤3002),启动导航应用中执行本公开实施例的方案的系统,即图2中的“事件、条件、操作项控制器(或导航应用事件、导航应用条件、导航应用操作项控制器,acf controller)203(以下简称为acf控制器),接收导航事件注册请求,注册导航应用事件、导航应用条件、通用导航操作项(或导航内存操作项)(步骤3003),以生成导航内存管理策略。在启动acf控制器203时可以获取与导航应用的用户相关的条件。此时,acf控制器203开始监听所有的注册导航应用事件(步骤3004)。如图3所示,可能监听到退出场景事件(步骤3005),可能监听到低内存警告事件(步骤3006),可能监听到进入场景事件(步骤3007),还可能监听到更多导航应用事件(步骤3008)。
[0163]
当acf控制器203监听到该应用场景的注册导航应用事件时,比如在行中导航过程中监听到低内存警告事件(步骤3006),便会根据导航内存管理策略智能调度导航内存操作项(步骤3009)。智能调度导航内存操作项的实现方式可以参见说明书的前述相关内容。
[0164]
在acf控制器203监听到注册导航应用事件时,会根据导航内存管理策略去执行对应的注册导航内存操作项的降低内存占用操作,从而释放内存,以减轻应用的内存占用的压力,保证行中应用长期稳定运行,避免被操作系统强制退出。
[0165]
在图3中,步骤3010至3015指的是执行根据导航内存管理策略智能调度导航内存操作项(步骤3009)的执行方式示例。其中,步骤3010至3015是执行导航内存操作项以释放内存的操作,步骤3013至3015是恢复操作项为初始状态的操作。
[0166]
在步骤3010,根据导航内存管理策略对事件进行过滤,保留导航内存管理策略中设置的导航应用事件。例如,在导航内存管理策略未设置有该导航应用事件时,导航应用事件过滤结果为否,则此次导航内存操作项的降低内存占用操作结束。如果导航内存管理策略设置有该导航应用事件,则执行步骤3011,根据导航内存管理策略对条件进行过滤。在导航内存管理策略未设置有该导航应用条件的情况下,该导航应用条件被过滤掉,此次导航内存操作项的降低内存占用操作结束。如果导航内存管理策略设置有该导航应用条件,则该导航应用条件不被过滤掉,即导航应用条件过滤的判断结果为是,则执行导航内存操作项的降低内存占用操作释放内存,步骤3012。
[0167]
在步骤3013,acf控制器203对监听到的导航应用事件是否是进场景事件进行判断。例如,如果判断结果为是,则进入步骤3014。如果判断结果为否,则该进场景事件导致的导航内存操作项的恢复操作结束。在步骤3014,判断导航内存操作项引用计数(可以简称为操作项引用计数)是否为0。如果步骤3014判断结果为否,则表示导航内存操作项引用计数不为0,即,其他导航内存操作项组中存在该导航内存操作项,当前还有导航应用事件触发该导航内存操作项,因此,导航内存操作项的恢复操作结束。如果步骤3014判断结果为是,则表示导航内存操作项引用计数为0,其他导航内存操作项组中不存在该导航内存操作项,
当前没有导航应用事件触发该导航内存操作项,因此,可以执行步骤3015,恢复导航内存操作项为初始状态。
[0168]
以下参照图4描述前述的acf控制器的工作流程的示例。图4示出执行图3所示的智能调度内存操作项的一个示例性的acf控制器的工作流程示意图。
[0169]
如图4所示,acf控制器在接收到低内存警告事件等事件的情况下可以执行操作项以释放内存,acf控制器在接收到切前台事件等事件的情况下可以将已执行的内存操作项恢复到初始状态,以恢复业务运行。图4所示的acf控制器的工作流程是一个简略的概念性的描述,其具体工作流程可以参照前述实施例中相关的描述。
[0170]
在本公开的一个实施例中,提供一种导航应用内的内存管理方法,所述导航应用包括导航内存管理模块,所述方法包括通过所述导航内存管理模块执行以下步骤:
[0171]
接收导航应用的导航事件注册请求,以响应于所述导航事件注册请求注册触发内存管理操作的导航应用事件、表示导航应用的用户特征的导航应用条件和用于对导航应用内存操作对象进行操作的导航内存操作项;
[0172]
基于注册的导航应用事件、导航应用条件和导航内存操作项生成导航内存管理策略,其中,在所述导航内存管理策略中设置触发内存管理操作的导航应用事件和与导航应用事件对应的至少一个导航内存操作项;
[0173]
基于所述导航内存管理策略,响应于触发内存管理操作的导航应用事件发生触发对与所述导航应用事件对应的导航内存操作项的操作。
[0174]
根据本公开实施例提供的技术方案,通过所述导航应用包括导航内存管理模块,所述方法包括通过所述导航内存管理模块执行以下步骤:接收导航应用的导航事件注册请求,以响应于所述导航事件注册请求注册触发内存管理操作的导航应用事件、表示导航应用的用户特征的导航应用条件和用于对导航应用内存操作对象进行操作的导航内存操作项;基于注册的导航应用事件、导航应用条件和导航内存操作项生成导航内存管理策略,其中,在所述导航内存管理策略中设置触发内存管理操作的导航应用事件和与导航应用事件对应的至少一个导航内存操作项;基于所述导航内存管理策略,响应于触发内存管理操作的导航应用事件发生触发对与所述导航应用事件对应的导航内存操作项的操作,可以注册使得计算设备中运行的导航应用得以进行内存管理的导航应用事件、导航应用条件和导航内存操作项,保证导航应用在运行过程中使导航应用的内存处于健康平稳状态,进而在导航应用所在的操作系统中稳定运行,避免导航应用被操作系统强制退出。而且,针对不同的导航事件注册请求,可以基于不同的导航应用事件、表示用户特征的导航应用条件和导航内存操作项,智能化、动态地管理内存,达到内存优化效果。而且,表示用户特征的导航应用条件可以基于用户特征的不同保证导航内存管理策略的千人千面。
[0175]
在本公开的一个实施例中,导航应用内的内存管理方法可以如同前述参照图1至图4描述的实施例中的应用内的内存管理方法那样实施,具备相应的特征,因此也可以具备相应的技术效果。
[0176]
以下参照图5描述根据本公开一实施方式的应用内的内存管理装置。图5示出根据本公开一实施方式的应用内的内存管理装置的结构框图。应用内的内存管理装置500包括:事件注册模块501、内存管理策略生成模块502、内存操作模块503。
[0177]
事件注册模块501被配置为接收应用的事件注册请求,以响应于所述事件注册请
求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项。
[0178]
内存管理策略生成模块502被配置为基于注册的事件、条件和内存操作项生成内存管理策略,其中,在所述内存管理策略中设置触发内存管理操作的事件和与事件对应的至少一个内存操作项。
[0179]
内存操作模块503被配置为基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作。
[0180]
根据本公开实施例提供的技术方案,通过事件注册模块,被配置为接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项;内存管理策略生成模块,被配置为基于注册的事件、条件和内存操作项生成内存管理策略,其中,在所述内存管理策略中设置触发内存管理操作的事件和与事件对应的至少一个内存操作项;内存操作模块,被配置为基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作,可以注册使得计算设备中运行的应用得以进行内存管理的事件、条件和内存操作项,保证应用在运行过程中使应用的内存处于健康平稳状态,进而在应用所在的操作系统中稳定运行,避免应用被操作系统强制退出。而且,针对不同的事件注册请求,可以基于不同的事件、表示用户特征的条件和内存操作项,智能化、动态地管理内存,达到内存优化效果。而且,表示用户特征的条件可以基于用户特征的不同保证内存管理策略的千人千面。
[0181]
图6示出根据本公开一实施方式的电子设备的结构框图。
[0182]
本公开实施方式还提供了一种电子设备,如图6所示,包括至少一个处理器601;以及与至少一个处理器601通信连接的存储器602;其中,存储器602存储有可被至少一个处理器601执行的指令,指令被至少一个处理器601执行以实现以下步骤:
[0183]
接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项;
[0184]
基于注册的事件、条件和内存操作项生成内存管理策略,其中,在所述内存管理策略中设置触发内存管理操作的事件和与事件对应的至少一个内存操作项;
[0185]
基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作。
[0186]
在本公开的一个实施例中,在所述内存管理策略中设置有内存管理操作的触发时机,所述触发时机包括触发内存管理操作的事件,或者包括触发内存管理操作的事件和表示用户特征的条件,
[0187]
其中,所述基于所述内存管理策略,响应于触发内存管理操作的事件发生触发与所述事件对应的内存操作项执行,包括:
[0188]
基于所述内存管理策略中设置的触发时机触发对与所述事件对应的内存操作项的操作。
[0189]
在本公开的一个实施例中,所述内存操作项包括进行内存操作的动作和被进行内存操作的内存操作对象。
[0190]
在本公开的一个实施例中,所述触发内存管理操作的事件包括触发降低内存占用
的操作的第一类型事件和触发恢复内存占用的操作的第二类型事件,
[0191]
其中,所述基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作,包括:
[0192]
基于所述内存管理策略,响应于所述第一类型事件触发与所述事件对应的内存操作项的降低内存占用操作,或者
[0193]
基于所述内存管理策略,响应于所述第二类型事件触发与所述事件对应的已执行降低内存占用操作的内存操作项的恢复内存占用操作。
[0194]
在本公开的一个实施例中,所述基于所述内存管理策略,响应于所述第二类型事件触发与所述事件对应的已执行降低内存占用操作的内存操作项的恢复内存占用操作,包括:
[0195]
基于所述内存管理策略,响应于所述第二类型事件,确定与所述事件对应的已执行降低内存占用操作的内存操作项的引用计数是否为零;
[0196]
根据与所述事件对应的已执行降低内存占用操作的内存操作项的引用计数为零,将已执行降低内存占用操作的内存操作项恢复为初始状态。
[0197]
在本公开的一个实施例中,所述接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项,包括:
[0198]
接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和由用于对内存操作对象进行操作的内存操作项构成的内存操作项组,
[0199]
其中,所述基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项的操作,包括:
[0200]
基于所述内存管理策略,响应于触发内存管理操作的事件发生触发对与所述事件对应的内存操作项组的操作。
[0201]
在本公开的一个实施例中,指令还被至少一个处理器601执行以实现以下步骤:
[0202]
基于所述内存管理策略,响应于先触发的第一类型事件之后的另一第一类型事件触发,在与所述先触发的第一类型事件对应的内存操作项组中增加至少一个内存操作项。
[0203]
在本公开的一个实施例中,所述接收应用的事件注册请求,以响应于所述事件注册请求注册触发内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项,包括:
[0204]
响应于进入所述应用的应用场景,接收针对所述应用场景的事件注册请求,以响应于所述事件注册请求注册触发针对所述应用场景的内存管理操作的事件、表示用户特征的条件和用于对内存操作对象进行操作的内存操作项。
[0205]
在本公开的一个实施例中,所述表示用户特征的条件包括表示运行所述应用的计算设备的设备信息,其中,所述设备信息包括使所述应用在所述计算设备的操作系统中达到就被强制退出的内存占用阈值。
[0206]
图7是适于用来实现根据本公开各实施方式的方法的计算机系统的结构示意图。如图7所示,计算机系统700包括处理单元701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行上述附图所示的
实施方式中的各种处理。在ram703中,还存储有系统700操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。
[0207]
以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。其中,所述处理单元701可实现为cpu、gpu、tpu、fpga、npu等处理单元。
[0208]
特别地,根据本公开的实施方式,上文参考附图描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行附图中的方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。例如,本公开的实施方式包括一种可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现用于执行附图中的方法的程序代码。
[0209]
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0210]
描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
[0211]
作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述节点中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
[0212]
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献