内存分配器确定方法、装置、电子设备及存储介质与流程

文档序号:32891315发布日期:2023-01-12 23:13阅读:26来源:国知局
内存分配器确定方法、装置、电子设备及存储介质与流程

1.本技术属于通信技术领域,具体涉及一种内存分配器确定方法、装置、电子设备及存储介质。


背景技术:

2.目前,电子设备的操作系统(例如安卓(android)系统)只能包含一种内存分配器(例如:内存分配器1),以负责电子设备的内存分配与管理,使得电子设备上运行的进程都使用内存分配器1。
3.然而,由于不同的内存分配器的机制存在差异,因此电子设备上运行的部分进程并不适合使用内存分配器1。例如:进程1使用内存分配器1时,内存占用较少、进程性能较差;但是由于进程1对应的应用程序为电子设备中的重要应用程序,对进程性能要求较高,内存占用要求较低,所以进程1并不适合使用内存分配器1;如此,电子设备使用内存分配器的灵活性较低。


技术实现要素:

4.本技术实施例的目的是提供一种内存分配器确定方法、装置、电子设备及存储介质,能够解决电子设备使用内存分配器的灵活性较低的问题。
5.为了解决上述技术问题,本技术是这样实现的:
6.第一方面,本技术实施例提供了一种内存分配器确定方法,该内存分配器确定方法包括:获取在电子设备中运行的第一进程的信息;根据该第一进程的信息,从电子设备兼容的至少两个内存分配器中确定目标内存分配器;其中,该目标内存分配器用于管理第一进程的内存,目标内存分配器与第一进程相匹配。
7.第二方面,本技术实施例提供了一种内存分配器确定装置,该内存分配器确定装置包括:获取模块和确定模块。获取模块,用于获取在电子设备中运行的第一进程的信息。确定模块,用于根据获取模块获取的第一进程的信息,从电子设备兼容的至少两个内存分配器中确定目标内存分配器;其中,该目标内存分配器用于管理第一进程的内存,目标内存分配器与第一进程相匹配。
8.第三方面,本技术实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
9.第四方面,本技术实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
10.第五方面,本技术实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
11.第六方面,本技术实施例提供一种计算机程序产品,该程序产品被存储在存储介
质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法。
12.在本技术实施例中,电子设备可以获取在电子设备中运行的第一进程的信息;以根据第一进程的信息,从电子设备兼容的至少两个内存分配器中确定目标内存分配器;其中,目标内存分配器用于管理第一进程的内存,目标内存分配器与第一进程相匹配。由于电子设备可以获取在电子设备中运行的第一进程的信息,因此电子设备可以根据获取的第一进程的信息从兼容的至少两个内容分配器中确定与第一进程相匹配的目标内容分配器,即电子设备可以选择一个适合第一进程使用的内存分配器作为目标内存分配器,以管理该第一进程的内存,从而提高了电子设备使用内存分配器的灵活性。
附图说明
13.图1是本技术实施例提供的一种内存分配器确定方法的示意图;
14.图2是本技术实施例提供的一种内存分配器确定装置的结构示意图;
15.图3是本技术实施例提供的一种电子设备的硬件结构示意图之一;
16.图4是本技术实施例提供的一种电子设备的硬件结构示意图之二。
具体实施方式
17.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
18.本技术的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
19.下面结合附图,通过具体的实施例及其应用场景对本技术实施例提供的内存分配器确定方法进行详细地说明。
20.本技术实施例中的内存分配器确定方法可以应用于电子设备使用内存分配器的场景。
21.目前,电子设备的操作系统(例如安卓(android)系统)为了更好地管理用户进程的内存申请,可以通过内存分配器来管理用户态的内存申请,内存分配器代理了用户进程通过malloc函数、calloc函数、free函数等申请和释放内存函数,近年来电子设备使用的内存分配器主要是jemalloc内存分配器或者scudo内存分配器,也就是说,电子设备的操作系统只能包含一种内存分配器(例如:jemalloc内存分配器),以负责电子设备的内存分配与管理,因此电子设备上运行的进程也都使用jemalloc内存分配器进行处理。
22.然而,一方面,不同的内存分配器的实现机制存在较大差异,在性能以及内存占用上的表现也存在一定差异;另一方面,操作系统上运行的进程众多,众多进程使用内存的方式也不尽相同;所以在电子设备运行的众多进程中,一部分进程可能适合使用jemalloc内
存分配器,另一部分可能更适合使用scudo内存分配器。因此现有技术在内存分配器的选择上,无法做到兼顾所有进程都能使用更适合自己的分配器。本技术提供一种操作系统支持多内存分配器的方法,旨在为操作系统上运行的大部分进程都能使用更适合进程本身业务逻辑的内存分配器。
23.在本技术实施例提供的方案中,电子设备可以获取在电子设备中运行的第一进程的信息;以根据第一进程的信息,从电子设备兼容的至少两个内存分配器中确定目标内存分配器;其中,目标内存分配器用于管理第一进程的内存,目标内存分配器与第一进程相匹配。由于电子设备可以获取在电子设备中运行的第一进程的信息,因此电子设备可以根据获取的第一进程的信息从兼容的至少两个内容分配器中确定与第一进程相匹配的目标内容分配器,即电子设备可以选择一个适合第一进程使用的内存分配器作为目标内存分配器,以管理该第一进程的内存,从而提高了电子设备使用内存分配器的灵活性。
24.本技术实施例提供一种内存分配器确定方法,图1示出了本技术实施例提供的一种内存分配器确定方法的流程图,该方法可以应用于电子设备。如图1所示,本技术实施例提供的内存分配器确定方法可以包括下述的步骤201和步骤202。
25.步骤201、电子设备获取在电子设备中运行的第一进程的信息。
26.可选地,本技术实施例中,上述第一进程可以为与电子设备中任意一个应用程序对应的进程。
27.可选地,本技术实施例中,上述第一进程的信息可以为第一进程的标识,第一进程的标识可以理解为与该第一进程对应的应用程序的标识。
28.步骤202、电子设备根据第一进程的信息,从电子设备兼容的至少两个内存分配器中确定目标内存分配器。
29.其中,目标内存分配器用于管理第一进程的内存,目标内存分配器与第一进程相匹配。
30.本技术实施例中,电子设备可以根据第一进程的信息,从电子设备兼容的至少两个内存分配器中查找与第一进程相匹配的目标内存分配器,以在确定目标内存分配器之后,使用该目标内存分配器管理第一进程的内存。
31.可以理解的,目标内存分配器是运行第一进程效果最好的内存分配器。
32.可选地,本技术实施例中,在上述步骤202之前,本技术实施例提供的内存分配器确定方法还包括下述的步骤301。
33.步骤301、电子设备对原始编译条件进行修改,以得到目标编译条件。
34.其中,在原始编译条件下,电子设备支持一个内存分配器;在目标编译条件下,电子设备兼容至少两个内存分配器。
35.可选地,本技术实施例中,上述对原始编译条件的修改为对makefile脚本文件的修改,makefile脚本文件用于控制编译内容。
36.可选地,本技术实施例中,电子设备可以通过标准函数库(libc)或其他能够保存内存分配器的函数库兼容至少两个内存分配器。
37.可选地,本技术实施例中,电子设备兼容的内存分配器可以为以下至少两项:scudo内存分配器、jemalloc-4.1.0内存分配器、jemalloc-5.1.0内存分配器。
38.可选地,本技术实施例中,上述步骤202具体可以通过下述的步骤202a至步骤202c
实现。
39.步骤202a、电子设备根据第一进程的信息,调用第一接口。
40.本技术实施例中,上述第一接口由内存分配相关的函数实现。
41.可选地,本技术实施例中,上述第一接口可以为内存分配接口,或者内存释放接口。
42.可选地,本技术实施例中,上述内存分配接口可以由:malloc函数、calloc函数或realloc函数实现,也可以由其他负责内存分配的函数实现,具体的可以根据实际使用需求确定,本发明实施例不作限定。
43.可选地,本技术实施例中,上述内存释放接口可以由free函数实现,也可以由其他负责内存释放的函数实现,具体的可以根据实际使用需求确定,本发明实施例不作限定。
44.可选地,本技术实施例中,上述第一接口为公共接口,或者可以理解为进程能够直接调用的接口。
45.步骤202b、电子设备通过第一接口,调用第二接口。
46.本技术实施例中,上述第二接口由查找内存分配器的函数实现。
47.可选地,本技术实施例中,上述第二接口为在第一接口和内存分配器接口之间增加的中间层接口,该第二接口为电子设备操作系统对应的接口。
48.可选地,本技术实施例中,上述第二接口可以由vendor_malloc函数、vendor_calloc函数、vendor_realloc函数或vendor_free函数实现,也可以由其他具有查找内存分配器功能的函数实现,具体的可以根据实际使用需求确定,本发明实施例不作限定。
49.可选地,本技术实施例中,电子设备通过第一接口,调用第二接口可以理解为:电子设备调用第一接口时,重定向或对接到第二接口,以通过第二接口为第一进程选择内存分配器。
50.可选地,本技术实施例中,第二接口为与第一接口对应的接口。
51.可以理解,电子设备调用的第一接口为内存分配接口(例如:由calloc函数实现的接口)时,通过第一接口调用的第二接口为与第一接口对应的接口(例如:由vendor_calloc函数实现的接口);或者,在电子设备调用的第一接口为内存释放接口(例如:由free函数实现的接口)时,通过第一接口调用的第二接口为与第一接口对应的接口(例如:由vendor_free函数实现的接口)。
52.步骤202c、电子设备通过第二接口,从电子设备兼容的至少两个内存分配器中确定目标内存分配器。
53.可以理解,在电子设备兼容多个内存分配器的情况下,电子设备可以通过第二接口从多个内存分配器中确定适合第一进程使用的内存分配器,以管理第一进程的内存。
54.可选地,本技术实施例中,上述第一接口为内存分配接口,目标内存分配器用于为第一进程分配内存。或者,上述第一接口为内存释放接口,目标内存分配器用于释放第一进程的内存。
55.具体地,上述第一接口为内存分配接口时,电子设备通过第一接口调用与内存分配接口对应的第二接口,然后第二接口确定与第一进程对应的目标内存分配器之后,通过与第一接口对应的负责分配内存的目标内存分配器接口,为第一进程分配内存。
56.例如:在电子设备调用的第一接口由malloc函数实现的情况下,电子设备通过第
一接口调用的第二接口为由vendor_malloc函数实现的接口,然后第二接口确定目标内存分配器为scudo内存分配器之后,可以通过由scudo-malloc函数实现的接口为第一进程分配内存。
57.具体地,上述第一接口为内存释放接口时,电子设备通过第一接口调用与内存释放接口对应的第二接口,然后第二接口确定与第一进程对应的目标内存分配器之后,通过与第一接口对应的负责释放内存的目标内存分配器接口,为第一进程释放内存。
58.例如:在电子设备调用的第一接口由free函数实现的情况下,电子设备通过第一接口调用的第二接口为由vendor_free函数实现的接口,然后第二接口确定目标内存分配器为jemalloc内存分配器之后,可以通过由jemalloc-free函数实现的接口为第一进程释放内存。
59.本技术实施例提供一种内存分配器确定方法,电子设备可以获取在电子设备中运行的第一进程的信息;以根据第一进程的信息,从电子设备兼容的至少两个内存分配器中确定目标内存分配器;其中,目标内存分配器用于管理第一进程的内存,目标内存分配器与第一进程相匹配。由于电子设备可以获取在电子设备中运行的第一进程的信息,因此电子设备可以根据获取的第一进程的信息从兼容的至少两个内容分配器中确定与第一进程相匹配的目标内容分配器,即电子设备可以选择一个适合第一进程使用的内存分配器作为目标内存分配器,以管理该第一进程的内存,从而提高了电子设备使用内存分配器的灵活性。
60.可选地,本技术实施例中,上述步骤202中的“电子设备从电子设备兼容的至少两个内存分配器中确定目标内存分配器”具体可以通过下述的步骤401和步骤402实现。
61.步骤401、电子设备获取目标结果表。
62.本技术实施例中,上述目标结果表用于指示进程与内存分配器的对应关系。
63.本技术实施例中,目标结果表包括至少一个对应关系,每个对应关系为一个进程与一个内存分配器的对应关系。
64.步骤402、在目标结果表中存在第一进程的信息的情况下,电子设备将目标结果表中与第一进程的信息对应的内存分配器,确定为目标内存分配器。
65.可以理解,电子设备可以通过至少两个内存分配器对第一进程进行测试,以确定与第一进程对应的内存分配器,并添加到目标结果表中,从而使得目标结果表中存在第一进程的信息。即目标结果表中保存有各进程与其最适合的内存分配器的对应关系。
66.需要说明的是,对于电子设备可以通过至少两个内存分配器对第一进程进行测试,以确定与第一进程对应的内存分配器,并添加到目标结果表的具体实现方式,将在下述实施例中进行描述,此处不予赘述。
67.本技术实施例中,电子设备可以获取目标结果表,并根据第一进程的信息在该目标结果表中查找与第一进程对应的内存分配器,以确定目标内存分配器。
68.具体地,电子设备可以根据第一进程的信息,通过第二接口在目标结果表中查找第一进程,并将与第一进程对应的内存分配器确定为目标内存分配器。
69.示例性地,如表1所示,表中包括进程1-进程5的标识,以及与每个进程对应的内存分配器,即包括5个对应关系;电子设备可以根据第一进程(例如:进程3)的信息,通过第二接口在目标结果表中查找进程3,并将与进程3对应的内存分配器(例如:进程3对应内存分配器2)确定为目标内存分配器,以通过该内存分配器2管理进程3的内存。
70.表1(目标结果表)
[0071] 进程内存分配器1进程1内存分配器12进程2内存分配器13进程3内存分配器24进程4内存分配器35进程5内存分配器2
[0072]
如此,由于电子设备在运行第一进程、且调用由内存分配相关的函数实现的第一接口时,可以通过第一接口调用由查找内存分配器的函数实现的第二接口,以通过第二接口在目标结果表中查找与第一进程对应的目标内存分配器,以通过目标内存分配器管理第一进程的内存,从而提高了电子设备使用内存分配器的灵活性。
[0073]
可选地,本技术实施例中,上述步骤202中的“电子设备从电子设备兼容的至少两个内存分配器中确定目标内存分配器”具体可以通过下述的步骤501实现。
[0074]
步骤501、在根据第一进程的信息,确定第一进程为非初次运行的情况下,电子设备获取第一进程的全局变量的数值,并将与第一进程的全局变量的数值对应的内存分配器,确定为目标内存分配器。
[0075]
本技术实施例中,一个全局变量的数值对应一个内存分配器。
[0076]
本技术实施例中,每个进程都对应有一个全局变量(flag)。
[0077]
可选地,本技术实施例中,电子设备可以根据电子设备兼容的至少两个内存分配器,提前设置每个内存分配器与全局变量的数值的对应关系。
[0078]
例如:与内存分配器1对应的全局变量的数值为1;与内存分配器2对应的全局变量的数值为2;与内存分配器3对应的全局变量的数值为3。即,当flag值为1的时候,指示的是内存分配器1,当flag值为2的时候,指示的是内存分配器2,当flag值为3的时候,指示的是内存分配器3。
[0079]
可以理解,电子设备可以根据第一进程的信息,通过第二接口在至少一个全局变量的数值中读取第一进程的全局变量的数值,从而将与第一进程的全局变量的数值对应的内存分配器确定为目标内存分配器。
[0080]
示例性地,如表2所示,表中包括进程1-进程5的标识,以及与每个进程对应的全局变量的数值,即包括5个对应关系;电子设备可以根据第一进程(例如:进程3)的信息,通过第二接口,查找第一进程(例如:进程3)的全局变量的数值,并将进程3的全局变量的数值(例如:flag=2)对应的内存分配器(例如:内存分配器2)确定为目标内存分配器,以通过内存分配器2管理进程3的内存。
[0081]
表2
[0082] 进程全局变量值1进程1flag=12进程2flag=13进程3flag=24进程4flag=35进程5flag=2
[0083]
如此,由于电子设备可以通过第二接口获取第一进程的全局变量的数值,并将与第一进程的全局变量的数值对应的内存分配器,确定为目标内存分配器,以管理第一进程的内存,从而提高了电子设备使用内存分配器的灵活性。
[0084]
可选地,本技术实施例中,在上述步骤401之前,本技术实施例提供的内存分配器确定方法还包括下述的步骤601。
[0085]
步骤601、电子设备根据目标结果表,更新目标结果表中的每个进程对应的全局变量的数值。
[0086]
其中,不同的全局变量的数值对应不同的内存分配器,目标结果表用于指示进程与内存分配器的对应关系。
[0087]
可选地,本技术实施例中,针对目标结果表中的进程(即已确定对应的内存分配器的进程),电子设备可以根据内存分配器与全局变量的数值的对应关系,更新目标结果表中的每个进程对应的全局变量的数值。
[0088]
可以理解,电子设备初次运行第一进程,且通过目标结果表确定该第一进程对应的目标内存分配器之后,可以根据内存分配器与全局变量的数值的对应关系,更新该第一进程对应的全局变量的数值;使得电子设备再次运行该第一进程时,可以直接获取该第一进程的全局变量的数值,以将该第一进程的全局变量的数值对应的内存分配器,确定为目标内存分配器。
[0089]
如此,无需电子设备每次通过查找目标结果表,才能确定与第一进程对应的内存分配器,从而减少了电子设备的耗时。
[0090]
可选地,本技术实施例中,电子设备更新目标结果表中的每个进程对应的全局变量的数值,可以理解为初始化每个进程的全局变量的数值,每个进程的全局变量的数值未初始化时,取值为0。
[0091]
可选地,本技术实施例中,在上述步骤201之前,本技术实施例提供的内存分配器确定方法还包括下述的步骤701至步骤703。
[0092]
步骤701、在电子设备中不存在与第一进程相关的测试数据的情况下,电子设备通过至少两个内存分配器,对电子设备中的第一进程进行测试,分别得到第一进程使用每个内存分配器时的分值。
[0093]
可选地,本技术实施例中,电子设备可以通过至少两个内存分配器,对电子设备中的第一进程进行测试,得到第一进程使用每个内存分配器时的性能分值和内存分值。
[0094]
具体地,电子设备可以通过进程训练模型对第一进程使用至少两个内存分配器时的进程启动时间、进程关键流程耗时等进行测试,以得到第一进程使用每个内存分配器时的性能分值。
[0095]
具体地,本技术实施例中,电子设备可以通过进程训练模型对第一进程使用至少两个内存分配器时的进程启动内存占用,进程内存占用峰值,进程常驻后台时内存占用等进行测试,以得到第一进程使用每个内存分配器时的内存分值。
[0096]
可选地,本技术实施例中,电子设备可以根据第一进程使用每个内存分配器时的性能分值和内存分值、第一进程的进程性能权重和电子设备的系统内存权重,确定第一进程使用每个内存分配器时的分值。
[0097]
可选地,本技术实施例中,上述第一进程的进程性能权重可以为用户根据进程的
重要程度设置的。
[0098]
可选地,本技术实施例中,上述电子设备的系统内存权重可以是根据电子设备的内存确定的。
[0099]
例如,对于内存较小(例如内存小于一个阈值)的电子设备,电子设备可以设置一个较高的系统内存权重,从而保证电子设备的内存充足;而对于内存较大(例如内存大于一个阈值)的电子设备,由于分配给进程的内存较为充足,所以电子设备可以设置一个较低的系统内存权重,以提高电子设备的性能。
[0100]
示例性地,以进程1和电子设备兼容两个内存分配器进行说明,进程1可以通过进程训练模型测试进程1使用内存分配器1时的性能分值和内存分值,然后根据进程1使用内存分配器1时的性能分值和内存分值,以及用户设置的进程1的进程性能权重和电子设备的系统内存权重,确定进程1使用内存分配器1时的分值;并且可以通过进程训练模型测试进程1使用内存分配器2时的性能分值和内存分值,然后根据进程1使用内存分配器2时的性能分值和内存分值,以及用户设置的进程1的进程性能权重和电子设备的系统内存权重,确定进程1使用内存分配器2时的分值;以及可以通过进程训练模型测试进程1使用内存分配器3时的性能分值和内存分值,然后根据进程1使用内存分配器3时的性能分值和内存分值,以及用户设置的进程1的进程性能权重和电子设备的系统内存权重,确定进程1使用内存分配器3时的分值,从而得到进程1使用多个内存分配器时的多个分值。
[0101]
可选地,本技术实施例中,针对第一进程使用每个内存分配器时的分值,电子设备可以通过以下公式计算得到:
[0102]
总分(total_score)=进程性能权重(process_perf_weight_coefficient)*性能分值(perf_score)+系统内存权重(sys_mem_weight_coefficient)*内存分值(mem_score)。
[0103]
例如:进程1使用内存分配器1时的性能分值为6分、内存分值为8分,并且进程1的进程性能权重为1,电子设备的系统内存权重为2,则进程1使用内存分配器1时的分值为:1
×
6+2
×
8=22分。
[0104]
步骤702、电子设备将多个分值中的最大分值对应的内存分配器,确定为与第一进程对应的目标内存分配器。
[0105]
可以理解,第一进程分别使用多个内存分配器进行测试之后,可以得到多个不同的分值,然后电子设备可以将多个分值中最大的分值对应的内存分配器,确定为与第一进程对应的目标内存分配器。
[0106]
步骤703、电子设备将第一进程与第一进程对应的目标内存分配器相关联,并添加到目标结果表。
[0107]
如此,后续电子设备在运行第一进程时,可以根据该目标结果表确定与该第一进程对应的目标内存分配器,并通过该目标内存分配器管理第一进程的内存,从而提高了电子设备使用内存分配器的准确性。
[0108]
可选地,本技术实施例中,上述目标结果表中包括至少一个进程的标识和至少一个内存分配器的标识,每个内存分配器分别对应一个进程。
[0109]
可选地,本技术实施例中,电子设备中部分进程(例如:与计算器应用程序对应的进程)为非重点进程,在使用不同分配器时的性能和内存占用差异不大,所以可以不参与测
试,使用电子设备的默认分配器管理内存,该默认分配器可以为电子设备兼容的至少两个内存分配器中的任意一个内存分配器。
[0110]
可选地,本技术实施例中,上述目标结果表可以跟随电子设备的系统版本更新而更新。可以理解,在电子设备的系统更新时,电子设备可以通过至少两个内存分配器,重新对电子设备中的进程进行测试,以根据测试结果更新目标结果表。
[0111]
可选地,本技术实施例中,本技术实施例提供的内存分配器确定方法还可以包括下述的步骤801至步骤803。
[0112]
步骤801、电子设备显示目标设置界面。
[0113]
本技术实施例中,上述目标设置界面中包括至少一个进程的标识和至少一个内存分配器的标识,每个内存分配器分别对应一个进程。
[0114]
可选地,本技术实施例中,电子设备可以在设置界面或者管家应用程序中提供设置进程内存分配器的功能,用户可以进行输入,触发电子设备显示设置进程内存分配器的界面(即目标设置界面)。
[0115]
步骤802、电子设备接收用户的第一输入。
[0116]
本技术实施例中,上述第一输入为用于修改目标进程对应的内存分配器的输入。
[0117]
可选地,本技术实施例中,上述目标进程可以为已经训练过的进程或未训练过的进程。
[0118]
可以理解,用户可以通过应用商店应用程序下载一些新的应用程序,这些应用程序对应的进程是未通过进程训练模型训练的,电子设备默认这些进程使用默认内存分配器,从而用户可以触发电子设备对这些进程进行训练,得到与这些进程对应的内存分配器。
[0119]
需要说明的是,针对电子设备对这些进程进行训练的过程描述可以参见上述实施例中对第一进程进行测试的过程描述,此处不再赘述。
[0120]
可选地,本技术实施例中,上述目标设置界面可以包括第一控件,该第一控件用于触发电子设备训练目标进程。
[0121]
可选地,本技术实施例中,上述第一输入可以为用户对上述第一控件的触控输入(例如,点击输入,拖动输入,或滑动输入等)或其他可行性输入,以触发电子设备修改目标进程对应的内存分配器,并更新目标设置界面中与目标进程对应的内存分配器的标识,本技术实施例对此不做限定。
[0122]
步骤803、电子设备响应于第一输入,修改目标进程对应的内存分配器,并更新目标设置界面中与目标进程对应的内存分配器的标识。
[0123]
可选地,本技术实施例中,电子设备对目标进程进行训练之后,可以同时更新目标结果表中与目标进程对应的内存分配器。
[0124]
如此,提高了电子设备确定目标进程使用的内存分配器的灵活性。
[0125]
需要说明的是,本技术实施例提供的内存分配器确定方法,执行主体可以为电子设备,或者内存分配器确定装置,或者内存分配器确定装置中的控制模块。本技术实施例中以电子设备执行内存分配器确定方法为例,说明本技术实施例提供的内存分配器确定装置。
[0126]
图2示出了本技术实施例中涉及的内存分配器确定装置的一种可能的结构示意图。如图2所示,该内存分配器确定装置70可以包括:获取模块71和确定模块72。
[0127]
其中,获取模块71,用于获取在电子设备中运行的第一进程的信息。确定模块,用于根据获取模块71获取的第一进程的信息,从电子设备兼容的至少两个内存分配器中确定目标内存分配器;其中,目标内存分配器用于管理第一进程的内存,目标内存分配器与第一进程相匹配。
[0128]
本技术实施例提供一种内存分配器确定装置,由于电子设备可以获取在电子设备中运行的第一进程的信息,因此电子设备可以根据获取的第一进程的信息从兼容的至少两个内容分配器中确定与第一进程相匹配的目标内容分配器,即电子设备可以选择一个适合第一进程使用的内存分配器作为目标内存分配器,以管理该第一进程的内存,从而提高了电子设备使用内存分配器的灵活性。
[0129]
在一种可能的实现方式中,本技术实施例提供的内存分配器确定装置70还包括:处理模块。处理模块,用于根据第一进程的信息,调用第一接口,第一接口由内存分配相关的函数实现;并通过第一接口,调用第二接口,第二接口由查找内存分配器的函数实现。确定模块72,具体用于通过第二接口,从电子设备兼容的至少两个内存分配器中确定目标内存分配器。
[0130]
在一种可能的实现方式中,获取模块71,还用于获取目标结果表,目标结果表用于指示进程与内存分配器的对应关系。确定模块,具体用于在目标结果表中存在第一进程的信息的情况下,将目标结果表中与第一进程的信息对应的内存分配器,确定为目标内存分配器。
[0131]
在一种可能的实现方式中,获取模块71,还用于在根据第一进程的信息,确定第一进程为非初次运行的情况下,获取第一进程的全局变量的数值。确定模块,具体用于将与第一进程的全局变量的数值对应的内存分配器,确定为目标内存分配器,一个全局变量的数值对应一个内存分配器。
[0132]
在一种可能的实现方式中,本技术实施例提供的内存分配器确定装置70还包括:更新模块。更新模块,用于在获取模块71获取第一进程的全局变量的数值之前,根据目标结果表,更新目标结果表中的每个进程对应的全局变量的数值,其中,不同的全局变量的数值对应不同的内存分配器,目标结果表用于指示进程与内存分配器的对应关系。
[0133]
在一种可能的实现方式中,本技术实施例提供的内存分配器确定装置70还包括:处理模块。处理模块,用于在获取模块71获取在电子设备中运行的第一进程的信息之前,在电子设备中不存在与第一进程相关的测试数据的情况下,通过至少两个内存分配器,对电子设备中的第一进程进行测试,分别得到第一进程使用每个内存分配器时的分值。确定模块72,还用于将多个分值中的最大分值对应的内存分配器,确定为与第一进程对应的目标内存分配器。处理模块,还用于将第一进程与第一进程对应的目标内存分配器相关联,并添加到目标结果表。
[0134]
在一种可能的实现方式中,本技术实施例提供的内存分配器确定装置70还包括:处理模块。处理模块,用于在确定模块72根据第一进程的信息,从电子设备兼容的至少两个内存分配器中确定目标内存分配器之前,对原始编译条件进行修改,以得到目标编译条件;其中,在原始编译条件下,电子设备支持一个内存分配器;在目标编译条件下,电子设备兼容至少两个内存分配器。
[0135]
在一种可能的实现方式中,第一接口为内存分配接口,目标内存分配器用于为第
一进程分配内存;或者,第一接口为内存释放接口,目标内存分配器用于释放第一进程的内存。
[0136]
本技术实施例中的内存分配器确定装置可以是装置,也可以是电子设备中的部件、集成电路、或芯片。该装置可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(mobile internet device,mid)、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本或者个人数字助理(personal digital assistant,pda)等,还可以为服务器、网络附属存储器(network attached storage,nas)、个人计算机(personal computer,pc)、电视机(television,tv)、柜员机或者自助机等,本技术实施例不作具体限定。
[0137]
本技术实施例中的内存分配器确定装置可以为具有操作系统的装置。该操作系统可以为安卓(android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本技术实施例不作具体限定。
[0138]
本技术实施例提供的内存分配器确定装置能够实现上述方法实施例实现的各个过程,为避免重复,这里不再赘述。
[0139]
可选地,如图3所示,本技术实施例还提供一种电子设备900,包括处理器901和存储器902,存储器902上存储有可在所述处理器901上运行的程序或指令,该程序或指令被处理器901执行时实现上述方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0140]
需要说明的是,本技术实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
[0141]
图4为实现本技术实施例的一种电子设备的硬件结构示意图。
[0142]
该电子设备100包括但不限于:射频单元101、网络模块102、音频输出单元103、输入单元104、传感器105、显示单元106、用户输入单元107、接口单元108、存储器109、以及处理器110等部件。
[0143]
本领域技术人员可以理解,电子设备100还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器110逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图4中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
[0144]
其中,处理器110,用于获取在电子设备中运行的第一进程的信息;并根据第一进程的信息,从电子设备兼容的至少两个内存分配器中确定目标内存分配器;其中,目标内存分配器用于管理第一进程的内存,目标内存分配器与第一进程相匹配。
[0145]
本技术实施例提供一种电子设备,由于电子设备可以获取在电子设备中运行的第一进程的信息,因此电子设备可以根据获取的第一进程的信息从兼容的至少两个内容分配器中确定与第一进程相匹配的目标内容分配器,即电子设备可以选择一个适合第一进程使用的内存分配器作为目标内存分配器,以管理该第一进程的内存,从而提高了电子设备使用内存分配器的灵活性。
[0146]
可选地,处理器110,还用于根据第一进程的信息,调用第一接口,第一接口由内存分配相关的函数实现;并通过第一接口,调用第二接口,第二接口由查找内存分配器的函数实现。
[0147]
处理器110,具体用于通过第二接口,从电子设备兼容的至少两个内存分配器中确定目标内存分配器。
[0148]
可选地,处理器110,还用于获取目标结果表,目标结果表用于指示进程与内存分配器的对应关系。
[0149]
处理器110,具体用于在目标结果表中存在第一进程的信息的情况下,将目标结果表中与第一进程的信息对应的内存分配器,确定为目标内存分配器。
[0150]
可选地,处理器110,还用于在根据第一进程的信息,确定第一进程为非初次运行的情况下,获取第一进程的全局变量的数值。
[0151]
处理器110,具体用于将与第一进程的全局变量的数值对应的内存分配器,确定为目标内存分配器,一个全局变量的数值对应一个内存分配器。
[0152]
可选地,处理器110,还用于在获取第一进程的全局变量的数值之前,根据目标结果表,更新目标结果表中的每个进程对应的全局变量的数值,其中,不同的全局变量的数值对应不同的内存分配器,目标结果表用于指示进程与内存分配器的对应关系。
[0153]
可选地,处理器110,还用于在获取在电子设备中运行的第一进程的信息之前,在电子设备中不存在与第一进程相关的测试数据的情况下,通过至少两个内存分配器,对电子设备中的第一进程进行测试,分别得到第一进程使用每个内存分配器时的分值;并将多个分值中的最大分值对应的内存分配器,确定为与第一进程对应的目标内存分配器;以及将第一进程与第一进程对应的目标内存分配器相关联,并添加到目标结果表。
[0154]
可选地,处理器110,还用于在根据第一进程的信息,从电子设备兼容的至少两个内存分配器中确定目标内存分配器之前,对原始编译条件进行修改,以得到目标编译条件;其中,在原始编译条件下,电子设备支持一个内存分配器;在目标编译条件下,电子设备兼容至少两个内存分配器。
[0155]
本技术实施例提供的电子设备能够实现上述方法实施例实现的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0156]
本实施例中各种实现方式具有的有益效果具体可以参见上述方法实施例中相应实现方式所具有的有益效果,为避免重复,此处不再赘述。
[0157]
应理解的是,本技术实施例中,输入单元104可以包括图形处理器(graphics processing unit,gpu)1041和麦克风1042,图形处理器1041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元106可包括显示面板1061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板1061。用户输入单元107包括触控面板1071以及其他输入设备1072中的至少一种。触控面板1071,也称为触摸屏。触控面板1071可包括触摸检测装置和触摸控制器两个部分。其他输入设备1072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
[0158]
存储器109可用于存储软件程序以及各种数据。存储器109可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个
功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器109可以包括易失性存储器或非易失性存储器,或者,存储器109可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddrsdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synch link dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,drram)。本技术实施例中的存储器109包括但不限于这些和任意其它适合类型的存储器。
[0159]
处理器110可包括一个或多个处理单元;可选的,处理器110集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器110中。
[0160]
本技术实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0161]
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器rom、随机存取存储器ram、磁碟或者光盘等。
[0162]
本技术实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0163]
应理解,本技术实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
[0164]
本技术实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0165]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本技术实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
[0166]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方
法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
[0167]
上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1