掌桥专利:专业的专利平台
掌桥专利
首页

内存处理方法、装置、电子设备和计算机可读存储介质

文献发布时间:2023-06-19 11:32:36


内存处理方法、装置、电子设备和计算机可读存储介质

技术领域

本申请涉及计算机技术领域,特别是涉及一种内存处理方法、装置、电子设备和计算机可读存储介质。

背景技术

随着计算机技术的发展,出现了各种类型的应用程序。电子设备能够兼容多个应用程序,但仅能够在前台运行一个应用程序,在后台可能运行多个应用程序。应用程序在后台运行时,会与前台运行的应用进程抢占内存使用,导致前台应用响应速度慢。

发明内容

本申请实施例提供了一种内存处理方法、装置、电子设备、计算机可读存储介质,可以提高前台应用的响应速度。

一种内存处理方法,包括:

获取当前运行的应用程序所对应的内存页标识集;

确定所述当前运行的应用程序中的前台应用和后台应用;

获取所述内存页标识集中与所述前台应用对应的前台内存页标识,调整所述前台内存页标识对应的前台内存页的优先级;调整后的所述前台内存页的优先级高于所述后台应用的后台内存页的优先级。

一种内存处理装置,所述装置包括:

获取模块,用于获取当前运行的应用程序所对应的内存页标识集;

确定模块,用于确定所述当前运行的应用程序中的前台应用和后台应用;

调整模块,用于获取所述内存页标识集中与所述前台应用对应的前台内存页标识,调整所述前台内存页标识对应的前台内存页的优先级;调整后的所述前台内存页的优先级高于所述后台应用的后台内存页的优先级。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取当前运行的应用程序所对应的内存页标识集;

确定所述当前运行的应用程序中的前台应用和后台应用;

获取所述内存页标识集中与所述前台应用对应的前台内存页标识,调整所述前台内存页标识对应的前台内存页的优先级;调整后的所述前台内存页的优先级高于所述后台应用的后台内存页的优先级。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取当前运行的应用程序所对应的内存页标识集;

确定所述当前运行的应用程序中的前台应用和后台应用;

获取所述内存页标识集中与所述前台应用对应的前台内存页标识,调整所述前台内存页标识对应的前台内存页的优先级;调整后的所述前台内存页的优先级高于所述后台应用的后台内存页的优先级。

上述内存处理方法、装置、电子设备和计算机可读存储介质,获取当前运行的应用程序所对应的内存页标识集,确定当前运行的应用程序中的前台应用和后台应用,能够将当前运行的应用程序划分前、后台应用。获取内存页标识集中与前台应用对应的前台内存页标识,能够区分前台应用和后台应用的内存页,以调整前台内存页标识对应的前台内存页的优先级,能够提高前台内存页的优先级,使得调整后的前台内存页的优先级高于后台应用的后台内存页的优先级。通过提高前台内存页的优先级,使得前台应用能够获得更高的内存使用优先级,前台应用延迟更低,响应速度更快。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为一个实施例中内存处理方法的应用环境图;

图2为一个实施例中内存处理方法的流程图;

图3为一个实施例中获取内存页标识集中与前台应用对应的前台内存页标识,调整前台内存页标识对应的前台内存页的优先级的流程图;

图4为一个实施例中内存处理方法的架构图;

图5为一个实施例中调整内存页的优先级的示意图;

图6为一个实施例中内存处理装置的结构框图;

图7为一个实施例中电子设备的部分结构的框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一应用标识称为第二应用标识,且类似地,可将第二应用标识称为第一应用标识。第一应用标识和第二应用标识两者都是应用标识,但其不是同一应用标识。

本申请提供的内存处理方法,可以应用于如图1所示的应用环境中。其中,电子设备102通过网络与服务器104进行通信。在一个实施例中,电子设备102可单独执行本申请实施例中提供的内存处理方法。电子设备102和服务器104也可协同用于执行本申请实施例中提供的内存处理方法。当电子设备102和服务器104协同用于执行本申请实施例中提供的内存处理方法时,服务器104存储当前运行的应用程序所对应的内存页标识集。电子设备102可从服务器104获取获取当前运行的应用程序所对应的内存页标识集,电子设备102确定当前运行的应用程序中的前台应用和后台应用。电子设备102可获取内存页标识集中与前台应用对应的前台内存页标识,调整前台内存页标识对应的前台内存页的优先级;调整后的前台内存页的优先级高于后台应用的后台内存页的优先级。其中,电子设备102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、便携式可穿戴设备和电视,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

图2为一个实施例中内存处理方法的流程图。本实施例中的内存处理方法,以运行于图1中的电子设备上为例进行描述。如图2所示,该内存处理方法包括步骤202至步骤206。

步骤202,获取当前运行的应用程序所对应的内存页标识集。

其中,当前运行的应用程序是指当前处于运行状态的应用程序,具体可以包括前台应用和后台应用中的至少一种。内存页标识集用于存放内存页对应的标识。前台应用是指用户在电子设备上正在操作状态的应用,后台应用是指用户没有操作但也在电子设备后台运行的应用。

具体地,电子设备可获取当前运行的应用程序,并获取当前运行的应用程序所对应的内存页标识集。该内存页标识集用于记录当前运行的应用程序所对应的内存页的标识。

在一个实施例中,内存页标识集用于记录当前运行的应用程序所使用的内存页的标识。

在一个实施例中,在前台应用发生改变的情况下,电子设备可获取当前运行的应用程序,并获取当前运行的应用程序所对应的内存页标识集。

步骤204,确定当前运行的应用程序中的前台应用和后台应用。

具体地,电子设备可从当前运行的应用程序中,分别确定当前运行的前台应用和后台应用。

在一个实施例中,电子设备可通过运行任务列表,确定当前运行的应用程序中的前台应用和后台应用。电子设备可获取预设时长内的运行任务列表,通过运行任务列表确定当前运行的应用程序中的前台应用和后台应用。即电子设备可获取一组最近运行任务的列表,按时间排序,最近使用的应用排在最前面,则排在最前面的即为前台应用,其余的应用为后台应用。

在一个实施例中,电子设备可获取自身运行的应用进程信息列表,根据应用进程信息列表确定当前运行的应用程序中的前台应用和后台应用。当进程中包含后台运行代码时,判定该进程对应的应用程序为后台应用。当应用进程信息列表中的某个进程处于最前端界面的展示状态时,判定该进程对应的应用程序为前台应用。

例如,前台应用从应用程序A切换为应用程序B,应用程序A进入后台继续运行,则应用程序A和应用程序B作为当前运行的应用程序,应用程序B为前台应用,应用程序A为后台应用。

步骤206,获取内存页标识集中与前台应用对应的前台内存页标识,调整前台内存页标识对应的前台内存页的优先级;调整后的前台内存页的优先级高于后台应用的后台内存页的优先级。

其中,前台内存页标识是指前台应用对应的内存页的标识,前台内存页是指前台应用对应的内存页。后台内存页是指后台应用对应的内存页。

具体地,优先级是指内存使用的优先级。电子设备可从内存页标识集中,获取与前台应用对应的前台内存页标识。电子设备可确定该前台内存页标识对应的前台内存页,并调整前台内存页的优先级,以提高前台内存页的优先级,使得前台内存页调整后的优先级高于后台应用的后台内存页的优先级。

在一个实施例中,电子设备还可从内存页标识集中,获取与后台应用对应的后台内存页标识。后台内存页标识是指后台应用对应的内存页的标识。电子设备可确定该后台内存页标识对应的后台内存页,电子设备可调整前台内存页的优先级,以提高前台内存页的优先级,使得前台内存页调整后的优先级高于后台内存页的优先级。

本实施例中,获取当前运行的应用程序所对应的内存页标识集,确定当前运行的应用程序中的前台应用和后台应用,能够将当前运行的应用程序划分前、后台应用。获取内存页标识集中与前台应用对应的前台内存页标识,能够区分前台应用和后台应用的内存页,以调整前台内存页标识对应的前台内存页的优先级,能够提高前台内存页的优先级,使得调整后的前台内存页的优先级高于后台应用的后台内存页的优先级。通过提高前台内存页的优先级,使得前台应用能够获得更高的内存使用优先级,前台应用延迟更低,响应速度更快。

在一个实施例中,获取内存页标识集中与前台应用对应的前台内存页标识,调整前台内存页标识对应的前台内存页的优先级,包括:

获取内存页标识集中与前台应用对应的前台内存页标识,确定前台内存页标识对应的前台内存页所处的链表;在前台内存页处于非活动链表内的情况下,将前台内存页移动至活动链表;活动链表的优先级高于非活动链表的优先级。

其中,活动链表用于存放经常被访问的处于活跃状态的内存页。非活动链表用于存放可能关联到一个或者多个进程,但是并不经常使用的内存页。

具体地,电子设备从内存页标识集中,获取与前台应用对应的前台内存页标识。电子设备确定与前台内存页标识对应的前台内存页,并确定该前台内存页所处的链表。该链表包括活动链表和非活动链表。活动链表使用内存的优先级高于非活动链表。

在前台内存页处于非活动链表内时,表示该前台内存页被放置在并不经常访问的队列中,则电子设备将该前台内存页移动至活动链表,从而将前台内存页移动至经常被访问的队列中。

在一个实施例中,电子设备可确定处于非活动链表内的每个前台内存页,将每个前台内存页从非活动链表移动至活动链表。

在一个实施例中,该链表为LRU(Least Recently Used,最近最少使用)链表,LRU链表分为活动链表和非活动链表。活动链表表示为active链表,非活动链表表示为inactive链表。

本实施例中,活动链表的优先级高于非活动链表的优先级,将前台应用对应的前台内存页放置在活动链表中,能够将前台内存页放置在经常被访问的队列中,从而提高前台应用使用内存的优先级,能够减少前台应用的页反复加载错误的次数。页反复加载错误(Foreground Aware Eviction Scheme,简称FAE)是指一种第一次加载页到内存,一段时间未访问之后,该页内存空间被释放,然后再次访问时,再次产生缺页中断,需要再次从外存读取相关数据到内存的过程。而读取外存和直接读取内存的时间差距非常大,会导致应用的响应延迟。本实施例中,通过提高前台应用使用内存的优先级,减少前台应用的页反复加载错误的次数,从而能够加快前台应用的启动速度。

在一个实施例中,该方法还包括:在前台内存页处于活动链表内的情况下,将前台内存页保留在活动链表内。

具体地,电子设备从内存页标识集中,获取与前台应用对应的每个前台内存页标识。针对每个前台内存页标识,电子设备确定与前台内存页标识对应的前台内存页,得到每个前台内存页。针对每个前台内存页,电子设备确定前台内存页所处的链表。针对每个前台内存页,判断前台内存页是否处于活动链表内。在前台内存页处于活动链表内的情况下,不移动该前台内存页,以将该前台内存页保留在活动链表内。

本实施例中,在前台内存页处于活动链表内的情况下,将前台内存页保留在活动链表内,以将前台内存页保留在经常被访问的队列中,能够提高前台应用使用内存的优先级,从而提升前台应用的内存响应,提升前台应用的用户体验。

在一个实施例中,该方法还包括:获取内存页标识集中与后台应用对应的后台内存页标识,调整后台内存页标识对应的后台内存页的优先级;调整后的前台内存页的优先级高于调整后的后台内存页的优先级。

具体地,电子设备可从内存页标识集中,获取与前台应用对应的前台内存页标识。电子设备可确定该前台内存页标识对应的前台内存页,并调整前台内存页的优先级,以提高前台内存页的优先级。

并且,电子设备还可从内存页标识集中,获取与后台应用对应的后台内存页标识。电子设备可确定该后台内存页标识对应的后台内存页,电子设备可调整后台内存页的优先级,以降低前台内存页的优先级,使得前台内存页调整后的优先级高于后台内存页调整后的优先级。

在一个实施例中,电子设备可确定前台内存页标识对应的前台内存页和后台内存页标识对应的后台内存页,电子设备可获取前台内存页和后台内存页的优先级,将前台内存页和后台内存页的优先级进行对比。在前台内存页的优先级低于后台内存页的优先级的情况下,调整该前台内存页的优先级,以提高该前台内存页的优先级,使得该前台内存页的优先级高于该后台内存页的优先级。

在一个实施例,在前台内存页的优先级低于后台内存页的优先级的情况下,电子设备可调整该后台内存页的优先级,以降低该后台内存页的优先级,使得该前台内存页的优先级高于该后台内存页的优先级。

在一个实施例,在前台内存页的优先级低于后台内存页的优先级的情况下,电子设备可同时调整该前台内存页和后台内存页的优先级,以提高该前台内存页的优先级、降低该后台内存页的优先级,使得该前台内存页的优先级高于该后台内存页的优先级。

本实施例中,通过获取内存页标识集中与后台应用对应的后台内存页标识,以通过后台内存页标识快速准确查找后台应用正在使用后台内存页。通过调整后台内存页标识对应的后台内存页的优先级,使得调整后的前台内存页的优先级高于调整后的后台内存页的优先级,通过提高前台内存页的优先级,使得前台应用获得更高的内存使用优先级、后台应用获得更低的内存使用优先级,能够降低后台应用的对于内存的需求,提升前台应用的内存响应。

在一个实施例中,获取内存页标识集中与后台应用对应的后台内存页标识,调整后台内存页标识对应的后台内存页的优先级,包括:

获取内存页标识集中与后台应用对应的后台内存页标识,确定后台内存页标识对应的后台内存页所处的链表;在后台内存页处于活动链表内的情况下,将后台内存页移动至非活动链表;活动链表的优先级高于非活动链表的优先级。

具体地,电子设备从内存页标识集中,获取与后台应用对应的后台内存页标识。电子设备确定与后台内存页标识对应的后台内存页,并确定该后台内存页所处的链表。该链表包括活动链表和非活动链表。活动链表使用内存的优先级高于非活动链表。

在后台内存页处于活动链表内时,表示该后台内存页被放置在经常被访问的队列,则电子设备将该后台内存页移动至活动链表,从而将后台内存页移动至不经常被访问的队列。针对每个后台内存页进行相同的处理,以将每个处于活动链表内的后台内存页移动至非活动链表。

本实施例中,活动链表的优先级高于非活动链表的优先级。对于处于活动链表内的后台内存页,将后台内存页移动至非活动链表中,能够将后台内存页移动至不经常被访问的队列中,从而降低后台应用使用内存的优先级,能够加快前台应用的启动速度。

在一个实施例中,该方法还包括:在后台内存页处于非活动链表内的情况下,将后台内存页保留在非活动链表内。

具体地,电子设备从内存页标识集中,获取与后台应用对应的每个后台内存页标识。针对每个后台内存页标识,电子设备确定与后台内存页标识对应的后台内存页,得到每个后台内存页。针对每个后台内存页,电子设备确定后台内存页所处的链表。针对每个后台内存页,判断后台内存页是否处于非活动链表内。在后台内存页处于非活动链表内的情况下,移动该后台内存页,以将该后台内存页保留在活动链表内。

本实施例中,在后台内存页处于非活动链表内的情况下,将后台内存页保留在非活动链表内,以将后台内存页保留在不经常被访问的队列中,从而能够降低后台应用的对于内存的需求,为前台应用提供更多的内存。

在一个实施例中,该方法还包括:确定非活动链表中的干净内存页,并对干净内存页进行回收处理。

其中,干净内存页是指内存空间中未经修改的内存页,干净内存页可以为一个或多个内存页。

具体地,电子设备可确定非活动链表中的干净内存页,并通过回收进程对干净内存页进行回收处理。例如通过kswapd进程对非活动链表中的干净内存页进行回收处理。

本实施例中,通过对非活动链表中的干净内存页进行回收,能够增加可使用的内存空间,保证应用程序的正常运行。

在一个实施例中,该方法还包括:确定非活动链表中的脏内存页,并对脏内存页进行回收处理。

其中,脏内存页是指内存空间中经过修改的内存页,脏内存页可以为一个或多个内存页。

具体地,电子设备可确定非活动链表中的脏内存页,并通过回收进程对脏内存页进行存储和回收处理。例如通过kdflush进程对脏内存页进行存储处理和回收处理。

在一个实施例中,该方法还包括:确定非活动链表中的干净内存页和脏内存页,基于干净内存页的优先级高于脏内存页的优先级,依次干净内存页和脏内存页对进行回收处理。

具体地,电子设备可以直接对干净内存页进行回收处理,而在对脏内存页进行回收处理前,还需要将其进行存储,相比于干净内存页的处理时间,脏内存页的处理时间更长。本实施例中优先回收干净内存页,可以提高内存回收的效率。

在一个实施例中,如图3所示,获取内存页标识集中与前台应用对应的前台内存页标识,调整前台内存页标识对应的前台内存页的优先级,包括:

步骤302,获取前台应用的第一应用标识和后台应用的第二应用标识。

具体地,在当前运行的应用程序被划分为前台应用和后台应用的情况下,应用程序的应用标识被相应划分为第一应用标识和第二应用标识。第一应用标识是指前台应用对应的应用标识,第二应用标识是指后台应用对应的应用标识。电子设备确定当前运行的应用程序后,可确定该当前运行的应用程序中的前台应用和后台应用。电子设备可获取该前台应用对应的第一应用标识和后台应用对应的第二应用标识。

在一个实施例中,电子设备可通过内核kernel获取前台应用的配置文件,从前台应用的配置文件中获取该前台应用的第一应用标识。电子设备可通过内核kernel获取后台应用的配置文件,从后台应用的配置文件中获取该后台应用的第二应用标识。

步骤304,从内存页标识集中,确定与第一应用标识相匹配的前台内存页标识。

具体地,电子设备将第一应用标识和内存页标识集中的各个内存页标识进行匹配处理,以确定与第一应用标识相匹配的内存页标识。电子设备将内存页标识集中与第一应用标识相匹配的内存页标识,判定为前台内存页标识。按照相同的处理方式,电子设备可从内存页标识集中,筛选出每个与第一应用标识相匹配的前台内存页标识。

步骤306,调整前台内存页标识对应的前台内存页的优先级。

具体地,电子设备可确定每个前台内存页标识分别对应的前台内存页,以调整每个前台内存页的优先级,使得每个前台内存页的优先级高于后台内存页的优先级。

在一个实施例中,电子设备在确定各个前台内存页后,确定每个前台内存页的优先级和每个后台内存页的优先级。筛选出优先级低于后台内存页的前台内存页,提高所筛选出的前台内存页的优先级,使得每个前台内存页的优先级高于后台内存页的优先级。

获取内存页标识集中与后台应用对应的后台内存页标识,调整后台内存页标识对应的后台内存页的优先级,包括:

步骤308,从内存页标识集中,确定与第二应用标识相匹配的后台内存页标识。

具体地,电子设备将第二应用标识和内存页标识集中的各个内存页标识进行匹配处理,以确定与第二应用标识相匹配的内存页标识。电子设备将内存页标识集中与第二应用标识相匹配的内存页标识,判定为后台内存页标识。按照相同的处理方式,电子设备可从内存页标识集中,筛选出每个与第二应用标识相匹配的后台内存页标识。

步骤310,调整后台内存页标识对应的后台内存页的优先级。

具体地,电子设备可确定每个后台内存页标识分别对应的后台内存页,调整每个后台内存页的优先级,以降低每个后台内存页的优先级,使得每个前台内存页的优先级高于后台内存页的优先级。

在一个实施例中,电子设备在确定各个后台内存页后,确定每个前台内存页的优先级和每个后台内存页的优先级。筛选出优先级高于前台内存页的后台内存页,降低所筛选出的后台内存页的优先级,使得每个前台内存页的优先级高于后台内存页的优先级。

可以理解,步骤304-306和步骤308-310的执行顺序不受限制,电子设备可先执行步骤304-306后执行308-310、也可以先执行步骤308-310后执行304-306,也可以同时执行步骤304-306和步骤308-310的操作。

本实施例中,同一应用程序的应用标识和内存页标识具有对应关系,则通过前台应用的第一应用标识和后台应用的第二应用标识,能够从内存页标识集中查找到相匹配的前台内存页标识和后台内存页标识,从而分别对前台内存页标识对应的前台内存页和后台内存页标识对应的后台内存页进行优先级调整,以提高前台内存页的优先级、降低后台内存页的优先级,使得前台应用获得更高的内存使用优先级,提升前台应用的启动速度。

在一个实施例中,该方法还包括:在应用程序存在更新的情况下,对更新的应用程序配置应用标识;对更新的应用程序的内存页,配置与应用标识相对应的内存页标识。

其中,应用标识是指电子设备为自身的应用程序配置的唯一标识,例如电子设备上安装了应用程序A、应用程序B和应用程序C,则电子设备可分别为应用程序A、应用程序B和应用程序C分配不同的应用标识。同一应用程序的应用标识和内存页标识具有对应关系。例如,应用程序A的标识为A,应用程序A对应的内存页标识为A-1、应用程序A的多个内存页可使用相同的内存页标识,也可以使用不同的内存页标识,例如A-1、A-2、A-3等。

具体地,电子设备在自身的应用程序存在更新的情况下,可确定存在更新的应用程序。应用程序存在更新是指电子设备中下载了新的应用程序或者更新了原有应用程序的版本。电子设备可对存在更新的应用程序进行配置,以对该应用程序分配唯一的应用标识。电子设备可确定该更新的应用程序所对应的内存页,对该更新的应用程序所对应的内存页配置内存页标识,所配置的内存页标识与该更新的应用程序的应用标识具有对应关系。

在一个实施例中,更新的应用程序被运行时,电子设备确定该更新的应用程序所使用的内存页,对所使用的内存页配置与应用标识对应的内存页标识。

在一个实施例中,电子设备在安装存在更新的应用程序时,对更新的应用程序配置应用标识。

在一个实施例中,同一应用程序的应用标识和内存页标识可相同。电子设备可对内存页所属应用程序的应用标识,该应用标识作为内存页的内存页标识。

本实施例中,在应用程序存在更新的情况下,对更新的应用程序配置应用标识,能够对每个应用程序分配唯一的应用标识。对更新的应用程序的内存页,配置与应用标识相对应的内存页标识,通过内存页标识和应用标识的对应关系,能够准确确定各个应用程序对应的内存页,从而能够确定前台应用对应的内存页和后台应用的内存页,以提高前台应用对应的内存页的优先级,为前台应用获得更多的内存空间,提高内存使用效率。

如图4所示,为一个实施例中内存处理方法的架构图。电子设备中设置前台感知移除机制(Foreground Aware Eviction Scheme,简称FAE)。

①电子设备下载应用程序,或者对电子设备中已安装的应用程序进行版本更新;

②在电子设备安装该应用程序时,电子设备通过系统框架更新该应程序的配置文件,该配置文件中记录分配的应用标识。该应用标识可保存在系统页表(Page TableEntry,简称PTE)里面,并和应用程序包名对应起来。应用程序运行时,内存页中标记所属应用程序的应用标识,该应用标识作为内存页的内存页标识。在一个实施例中,电子设备使用安卓操作系统,应用程序运行于安卓操作系统上。

③当电子设备的前台应用发生变化时,执行④。

④系统框架确定当前运行的前台应用,传送前台应用的应用标识。

⑤内核Kernel的前台感知移除机制可通过访问配置文件,获取电子设备的所有应用程序的应用标识。在一个实施例中,内核Kernel通过前台感知移除机制可获取当前运行的应用程序对应的应用标识。

⑥内核Kernel通过前台感知移除机制访问前台应用的配置文件,从配置文件中获取前台应用的应用标识。

前台感知移除机制能够动态获得前台应用的应用标识,通过应用标识识别前台应用的前台内存页,然后调整前台应用的前台内存页在活动链表和非活动链表中的优先级,从而提高前台应用使用内存的优先级。

如图5所示,为一个实施例中调整内存页的优先级的示意图。电子设备通过活动链表和非活动链表调整内存页的优先级。活动链表的优先级高于非活动链表的优先级。当内存页标识对应前台应用的应用标识时,表示该内存页标识对应的内存页为前台内存页。当内存页标识对应后台应用的应用标识时,表示该内存页标识对应的内存页为后台内存页。

当活动链表或非活动链表中的内存页被访问时,电子设备可确定被访问的内存页为前台内存页还是后台内存页。

在被访问的内存页为后台内存页,且后台内存页处于活动链表内的情况下,电子设备将该后台内存页移动至非活动链表。在被访问的内存页为后台内存页,且后台内存页处于非活动链表内的情况下,将后台内存页保留在非活动链表内。

在被访问的内存页为前台内存页,且前台内存页处于非活动链表内的情况下,电子设备将前台内存页移动至活动链表。在被访问的内存页为前台内存页,且前台内存页处于活动链表内的情况下,电子设备将前台内存页保留在活动链表内。

电子设备从非活动链表的尾部开始回收内存页,当内存页为干净内存页,电子设备通过回收进程对干净内存页进行回收处理。当内存页为脏内存页时,将脏内存页从非活动链表的尾部回写至非活动链表的头部。

通过本实施的内存处理,调整前台应用、后台应用的内存分配回收优先级,前台应用、后台应用的内存页在系统中被回收的概率,能够降低后台应用的对于内存的需求,提升前台应用的内存响应,从而提升前台应用的用户体验。

在一个实施例中,提供了一种内存处理方法,包括:

电子设备下载应用程序,或对已安装的应用程序进行更新。

在安装应用程序时,电子设备对所安装的应用程序配置应用标识。

接着,电子设备对更新的应用程序的内存页,配置与应用标识相对应的内存页标识。

当前台应用发生改变时,电子设备获取当前运行的应用程序所对应的内存页标识集。

接着,电子设备确定当前运行的应用程序中的前台应用和后台应用,并获取前台应用的第一应用标识和后台应用的第二应用标识。

进一步地,电子设备从内存页标识集中,确定与第一应用标识相匹配的前台内存页标识。

接着,电子设备确定前台内存页标识对应的前台内存页所处的链表。

可选地,在前台内存页处于非活动链表内的情况下,电子设备将前台内存页移动至活动链表;在前台内存页处于活动链表内的情况下,电子设备将前台内存页保留在活动链表内;活动链表的优先级高于非活动链表的优先级。

可选地,从内存页标识集中,电子设备确定与第二应用标识相匹配的后台内存页标识,并确定后台内存页标识对应的后台内存页所处的链表。

在后台内存页处于活动链表内的情况下,电子设备将后台内存页移动至非活动链表。

可选地,在后台内存页处于非活动链表内的情况下,电子设备将后台内存页保留在非活动链表内。

进一步地,电子设备从非活动链表的尾部开始回收内存页,当内存页为干净内存页,电子设备通过回收进程对干净内存页进行回收处理。当内存页为脏内存页时,将脏内存页从非活动链表的尾部回写至非活动链表的头部。

本实施例中,对每个应用程序配置唯一的应用标识,在应用程序运行时,对应用程序的内存页标记语应用标识相对应的内存页标识。在前台应用发生改变时,通过内存页标识集记录当前运行的应用程序所对应的内存页的标识,从而根据应用标识和内存页标识之间的对应关系,准确确定前台应用对应的前台内存页和后台应用对应的后台内存页。

活动链表的优先级高于非活动链表的优先级,将前台内存页从非活动链表移动至活动链表,能够将前台内存页移动至经常被访问的队列中。在前台内存页处于活动链表内的情况下,将前台内存页保留在活动链表内,以将前台内存页保留在经常被访问的队列中,能够提高前台应用使用内存的优先级,减少前台应用的页反复加载错误的次数,从而能够加快前台应用的启动速度。

对于处于活动链表内的后台内存页,将后台内存页移动至非活动链表中,而处于非活动链表内的后台内存页不进行移动,能够将后台内存页全部放置在不经常被访问的队列中,能够降低后台应用使用内存的优先级,同样能够加快前台应用的启动速度。

并且,通过对非活动链表中的干净内存页进行回收,能够增加可使用的内存空间,保证应用程序的正常运行。

应该理解的是,虽然图2-图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

图6为一个实施例的内存处理装置的结构框图。如图6所示,该内存处理装置包括:获取模块602、确定模块604和调整模块606。其中,

获取模块602,用于获取当前运行的应用程序所对应的内存页标识集。

确定模块604,用于确定当前运行的应用程序中的前台应用和后台应用。

调整模块606,用于获取内存页标识集中与前台应用对应的前台内存页标识,调整前台内存页标识对应的前台内存页的优先级;调整后的前台内存页的优先级高于后台应用的后台内存页的优先级。

本实施例中,获取当前运行的应用程序所对应的内存页标识集,确定当前运行的应用程序中的前台应用和后台应用,能够将当前运行的应用程序划分前、后台应用。获取内存页标识集中与前台应用对应的前台内存页标识,能够区分前台应用和后台应用的内存页,以调整前台内存页标识对应的前台内存页的优先级,能够提高前台内存页的优先级,使得调整后的前台内存页的优先级高于后台应用的后台内存页的优先级。通过提高前台内存页的优先级,使得前台应用能够获得更高的内存使用优先级,前台应用延迟更低,响应速度更快。

在一个实施例中,该调整模块606还用于:获取内存页标识集中与前台应用对应的前台内存页标识,确定前台内存页标识对应的前台内存页所处的链表;在前台内存页处于非活动链表内的情况下,将前台内存页移动至活动链表;活动链表的优先级高于非活动链表的优先级。

本实施例中,活动链表的优先级高于非活动链表的优先级,将前台应用对应的前台内存页放置在活动链表中,能够将前台内存页放置在经常被访问的队列中,从而提高前台应用使用内存的优先级,能够减少前台应用的页反复加载错误的次数。页反复加载错误是指一种第一次加载页到内存,一段时间未访问之后,该页内存空间被释放,然后再次访问时,再次产生缺页中断,需要再次从外存读取相关数据到内存的过程。而读取外存和直接读取内存的时间差距非常大,会导致应用的响应延迟。本实施例中,通过提高前台应用使用内存的优先级,减少前台应用的页反复加载错误的次数,从而能够加快前台应用的启动速度。

在一个实施例中,该调整模块606还用于:在前台内存页处于活动链表内的情况下,将前台内存页保留在活动链表内。

本实施例中,在前台内存页处于活动链表内的情况下,将前台内存页保留在活动链表内,以将前台内存页保留在经常被访问的队列中,能够提高前台应用使用内存的优先级,从而提升前台应用的内存响应,提升前台应用的用户体验。

在一个实施例中,该调整模块606还用于:获取内存页标识集中与后台应用对应的后台内存页标识,调整后台内存页标识对应的后台内存页的优先级;调整后的前台内存页的优先级高于调整后的后台内存页的优先级。

本实施例中,通过获取内存页标识集中与后台应用对应的后台内存页标识,以通过后台内存页标识快速准确查找后台应用正在使用后台内存页。通过调整后台内存页标识对应的后台内存页的优先级,使得调整后的前台内存页的优先级高于调整后的后台内存页的优先级,通过提高前台内存页的优先级,使得前台应用获得更高的内存使用优先级、后台应用获得更低的内存使用优先级,能够降低后台应用的对于内存的需求,提升前台应用的内存响应。

在一个实施例中,该调整模块606还用于:获取内存页标识集中与后台应用对应的后台内存页标识,确定后台内存页标识对应的后台内存页所处的链表;在后台内存页处于活动链表内的情况下,将后台内存页移动至非活动链表;活动链表的优先级高于非活动链表的优先级。

本实施例中,活动链表的优先级高于非活动链表的优先级。对于处于活动链表内的后台内存页,将后台内存页移动至非活动链表中,能够将后台内存页移动至不经常被访问的队列中,从而降低后台应用使用内存的优先级,能够加快前台应用的启动速度。

在一个实施例中,该调整模块606还用于:在后台内存页处于非活动链表内的情况下,将后台内存页保留在非活动链表内。

本实施例中,在后台内存页处于非活动链表内的情况下,将后台内存页保留在非活动链表内,以将后台内存页保留在不经常被访问的队列中,从而能够降低后台应用的对于内存的需求,为前台应用提供更多的内存。

在一个实施例中,该装置还包括:回收模块。该回收模块用于确定非活动链表中的干净内存页,并对干净内存页进行回收处理。

本实施例中,通过对非活动链表中的干净内存页进行回收,能够增加可使用的内存空间,保证应用程序的正常运行。

在一个实施例中,该回收模块还用于确定非活动链表中的脏内存页,并对脏内存页进行回收处理。

在一个实施例中,该回收模块还用于确定非活动链表中的干净内存页和脏内存页,基于干净内存页的优先级高于脏内存页的优先级,依次干净内存页和脏内存页对进行回收处理。

在一个实施例中,该调整模块606还用于:获取前台应用的第一应用标识和后台应用的第二应用标识;从内存页标识集中,确定与第一应用标识相匹配的前台内存页标识;调整前台内存页标识对应的前台内存页的优先级;

该调整模块606还用于:从内存页标识集中,确定与第二应用标识相匹配的后台内存页标识;调整后台内存页标识对应的后台内存页的优先级。

本实施例中,同一应用程序的应用标识和内存页标识具有对应关系,则通过前台应用的第一应用标识和后台应用的第二应用标识,能够从内存页标识集中查找到相匹配的前台内存页标识和后台内存页标识,从而分别对前台内存页标识对应的前台内存页和后台内存页标识对应的后台内存页进行优先级调整,以提高前台内存页的优先级、降低后台内存页的优先级,使得前台应用获得更高的内存使用优先级,提升前台应用的启动速度。

在一个实施例中,该装置还包括:配置模块。该配置模块用于在应用程序存在更新的情况下,对更新的应用程序配置应用标识;对更新的应用程序的内存页,配置与应用标识相对应的内存页标识。

本实施例中,在应用程序存在更新的情况下,对更新的应用程序配置应用标识,能够对每个应用程序分配唯一的应用标识。对更新的应用程序的内存页,配置与应用标识相对应的内存页标识,通过内存页标识和应用标识的对应关系,能够准确确定各个应用程序对应的内存页,从而能够确定前台应用对应的内存页和后台应用的内存页,以提高前台应用对应的内存页的优先级,为前台应用获得更多的内存空间,提高内存使用效率。

上述内存处理装置中各个模块的划分仅用于举例说明,在其他实施例中,可将内存处理装置按照需要划分为不同的模块,以完成上述内存处理装置的全部或部分功能。

关于内存处理装置的具体限定可以参见上文中对于内存处理方法的限定,在此不再赘述。上述内存处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

图7为一个实施例中电子设备的内部结构示意图。如图7所示,该电子设备包括通过系统总线连接的处理器和存储器。其中,该处理器用于提供计算和控制能力,支撑整个电子设备的运行。本实施例中,该处理器用于获取当前运行的应用程序所对应的内存页标识集,该处理器确定当前运行的应用程序中的前台应用和后台应用;该处理器获取内存页标识集中与前台应用对应的前台内存页标识,调整前台内存页标识对应的前台内存页的优先级,以使调整后的前台内存页的优先级高于后台应用的后台内存页的优先级。存储器可包括非易失性存储介质及内存储器。非易失性存储介质存储有操作系统和计算机程序。本实施例中,该存储器用于存储当前运行的应用程序对应的内存页标识集。该计算机程序可被处理器所执行,以用于实现以下各个实施例所提供的一种内存处理方法。内存储器为非易失性存储介质中的操作系统计算机程序提供高速缓存的运行环境。该电子设备可以是手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑、穿戴式设备等任意终端设备。

本申请实施例中提供的内存处理装置中的各个模块的实现可为计算机程序的形式。该计算机程序可在终端或服务器上运行。该计算机程序构成的程序模块可存储在电子设备的存储器上。该计算机程序被处理器执行时,实现本申请实施例中所描述方法的步骤。

本申请实施例还提供了一种计算机可读存储介质。一个或多个包含计算机可执行指令的非易失性计算机可读存储介质,当所述计算机可执行指令被一个或多个处理器执行时,使得所述处理器执行内存处理方法的步骤。

一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行内存处理方法。

本申请所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM),它用作外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 内存处理方法和装置、电子设备、计算机可读存储介质
  • 内存处理方法、装置、电子设备和计算机可读存储介质
技术分类

06120112966222