System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,尤其涉及一种内存回收方法及电子设备。
技术介绍
1、电子设备的内部存储器(如称为内存)用于暂时存放cpu的运算数据,以及与硬盘等外部存储器交换的数据,内存是外部存储器与cpu之间进行沟通的桥梁,所有应用程序都需要基于内存资源运行。
2、当然,电子设备的内存资源有限,当内存不足时,操作系统会清理内存中的不常用的应用的数据,即内存回收。
3、在相关技术中,启用内存控制子系统机制的电子设备,在内存回收的过程中,可能出现大量数据被释放之后,很快被加载回系统内存,影响电子设备的内存回收效率。
技术实现思路
1、本申请实施例提供一种内存回收方法及电子设备,按照应用程序的应用热度,有差别地回收该应用程序的数据所占用的系统内存,减少反复被释放和重加载的数据量,提升内存回收效率。
2、为达到上述目的,本申请的实施例采用如下技术方案:
3、第一方面,本申请实施例提供了一种内存回收方法。其中,该方法应用于电子设备,在电子设备中每一个应用程序对应一个内存控制子系统memcg,所述方法包括:确定后台运行的第一应用对应的第一内存量,其中,第一内存量指示需从第一应用占用的系统内存中回收的内存量,第一内存量随第一应用的应用热度的升高而减少,应用热度指示所述应用程序在后台运行的活跃程度。按照第一内存量,回收第一应用占用的系统内存。
4、在上述实施例中,启用memcg机制的电子设备,在回收系统内存的过程中,实现按照应用热度,有差别地回收该应
5、在一些实施例中,在所述确定后台运行的第一应用对应的第一内存量之前,所述方法还包括:确定所述第一应用对应的第一可回收内存量;第一内存量不大于所述第一可回收内存量。
6、在上述实施例中,通过应用程序的可回收内存量,限制确定出的第一内存量的大小,避免单个应用程序单次被回收的系统内存量过大,导致部分应用程序所占的系统内存未被回收,也即,在多个后台应用之间,出现系统内存回收不均的问题。
7、在一些实施例中,确定所述第一应用对应的第一可回收内存量,包括:确定所述第一应用的应用分值为第一分值;所述第一应用的应用分值随所述第一应用的应用热度的升高而降低;根据所述第一分值、第一应用对应的第二内存量和第三内存量,确定所述第一可回收内存量;其中,所述第二内存量指示所述第一应用中所有匿名页的大小,所述第三内存量指示所述第一应用中已从所述系统内存中换出的匿名页大小。
8、在上述实施例中,应用程序的可回收内存量,不仅受应用热度的影响,还会受到应用程序的所有匿名页的总大小以及已转存匿名页的大小的影响。避免应用热度高的应用程序经过多次内存回收之后,被回收过多的系统内存总量过高的问题。
9、在一些实施例中,根据所述第一分值、第一应用对应的第二内存量和第三内存量,确定所述第一可回收内存量,包括:确定所述第一分值对应的转存储比例;所述转存储比例是用于确定单个所述应用程序中可转存匿名页大小的比值,所述第一分值越高,对应的转存储比例越高;将所述转存储比例与所述第二内存量之间的乘积,确定为第一匿名页大小;从所述第一匿名页大小中,去除所述第三内存量,确定出所述第一可回收内存量。
10、在上述实施例中,避免应用热度高的应用程序经过多次内存回收之后,被回收过多的系统内存总量过高的问题。
11、在一些实施例中,在确定出的第一可回收内存量小于零的情况下,将其值修订为零。
12、在上述实施例中,在应用程序的应用分值发生变化的场景下,通过上述方法,可能出现计算出小于零的第一可回收内存量,通过修正小于零的第一可回收内存量,提升容错。
13、在一些实施例中,确定所述第一内存量,包括:获取第一可回收内存量与第四内存量之间的第一比例,所述第四内存量是指所述应用分值为第一分值,且后台运行的所有的所述应用程序对应的可回收内存量的总和;将所述第一比例和第五内存量之间的乘积,确定为所述第一内存量,所述第五内存量是指需从所述应用分值为第一分值的所有应用程序中回收的内存总量。
14、在上述实施例中,按照可回收内存量与相同分值的应用程序的可回收内存总量之间的占比,均匀地分配需从具有相同应用热度的应用程序中回收的系统内存量,这样,同样热度的应用程序,由该应用程序的所有匿名页大小和已转存的匿名页大小,决定需被回收的系统内存量。避免同样应用热度的应用程序之间,出现部分应用被回收过多系统内存,而另一部分应用所占用的系统内存却未被回收的问题,提高内存回收的效率。
15、在一些实施例中,每一个所述应用程序对应一个memcg数据结构,memcg数据结构中包括用于携带可回收内存量的字段;在确定出所述第一可回收内存量之后,所述方法还包括:将确定出的所述第一可回收内存量,写入对应的所述第一应用的所述memcg数据结构;所述确定所述第一内存量,还包括:获取第四内存量;所述获取第四内存量包括:在后台运行的所述应用程序的所述memcg数据结构中均已写入可回收内存量之后,从所述应用分值为所述第一分值,且后台运行的所述应用程序的所述memcg数据结构中,获取所述可回收内存量;将获得的所有的所述可回收内存量相加,得到对应的所述第四内存量。
16、在一些实施例中,按照所述第一内存量,回收所述第一应用占用的所述系统内存之后,所述方法还包括:利用所述第一应用的第一可回收内存量与所述第一内存量之间的差值,更新所述第一应用的所述memcg数据结构中的所述可回收内存量。
17、在上述实施例中,每一次回收之后,可以更新memcg数据结构中的可回收内存量。在下一次回收时,可以省去再次确定可回收内存量的过程,缩短内存回收所需的时长,提升内存回收效率。
18、在一些实施例中,确定所述第一内存量还包括:统计所述电子设备中后台运行的所有的所述应用程序对应的可回收内存总量;获取所述第五内存量;其中,所述第五内存量在所述电子设备所需回收的总内存量中的占比,等于所述第四内存量在所述电子设备的所述可回收内存总量中的占比。
19、在一些实施例中,按照所述第一内存量,回收所述第一应用占用的所述系统内存,包括:在所述第一应用的匿名页中,确定系统内存占用量为所述第一内存量的目标内存页,所述目标内存页的活跃程度低于所述第一应用的其他匿名页;将所述目标内存页从所述系统内存中换出。
20、在上述示例中,应用程序对应的系统内存回收量受应用热度的影响,在内存回收过程中,应用程序中的应用数据活跃程度,也影响到该应用数据是否被释放,降低应用数据被释放之后,又很快被加载回系统内存的可能性。
...
【技术保护点】
1.一种内存回收方法,其特征在于,应用于电子设备,所述电子设备中每一个应用程序对应一个内存控制子系统memcg,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,在所述确定后台运行的第一应用对应的第一内存量之前,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述确定所述第一应用对应的第一可回收内存量,包括:
4.根据权利要求3所述的方法,其特征在于,根据所述第一分值、第一应用对应的第二内存量和第三内存量,确定所述第一可回收内存量,包括:
5.根据权利要求3所述的方法,其特征在于,所述确定所述第一内存量,包括:
6.根据权利要求4所述的方法,其特征在于,每一个所述应用程序对应一个memcg数据结构,所述memcg数据结构中包括用于携带可回收内存量的字段;在确定出所述第一可回收内存量之后,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,按照所述第一内存量,回收所述第一应用占用的所述系统内存之后,所述方法还包括:
8.根据权利要求5所述的方法,其特征在于,所述确定所述第
9.根据权利要求1所述的方法,其特征在于,所述按照所述第一内存量,回收所述第一应用占用的所述系统内存,包括:
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
11.一种电子设备,其特征在于,所述电子设备中每一个应用程序对应一个内存控制子系统memcg,所述电子设备包括:处理器和存储器,所述存储器用于存储计算机指令,当所述处理器执行所述计算机指令时,以使所述电子设备执行如权利要求1-10中任一项所述方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机程序或指令,当所述计算机程序或指令在计算机上运行时,使得所述计算机执行如权利要求1-10中任一项所述的方法。
...【技术特征摘要】
1.一种内存回收方法,其特征在于,应用于电子设备,所述电子设备中每一个应用程序对应一个内存控制子系统memcg,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,在所述确定后台运行的第一应用对应的第一内存量之前,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述确定所述第一应用对应的第一可回收内存量,包括:
4.根据权利要求3所述的方法,其特征在于,根据所述第一分值、第一应用对应的第二内存量和第三内存量,确定所述第一可回收内存量,包括:
5.根据权利要求3所述的方法,其特征在于,所述确定所述第一内存量,包括:
6.根据权利要求4所述的方法,其特征在于,每一个所述应用程序对应一个memcg数据结构,所述memcg数据结构中包括用于携带可回收内存量的字段;在确定出所述第一可回收内存量之后,所述方法还包括:
7.根据权利要求6所述的方...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。