CN117130767B - 回收内存的方法、电子设备及存储介质 - Google Patents
回收内存的方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117130767B CN117130767B CN202310146944.9A CN202310146944A CN117130767B CN 117130767 B CN117130767 B CN 117130767B CN 202310146944 A CN202310146944 A CN 202310146944A CN 117130767 B CN117130767 B CN 117130767B
- Authority
- CN
- China
- Prior art keywords
- priority
- memory
- killed
- electronic device
- foreground
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请提供了一种回收内存的方法、电子设备及存储介质,涉及内存管理技术领域。该方法包括:当检测到内存回收失败时,将第一优先级提升至第二优先级,第一优先级根据内存回收失败时被查杀的进程的优先级确定,第二优先级的级别高于第一优先级的级别;根据第二优先级确定待查杀进程;对待查杀进程进行查杀处理,以回收待查杀进程所占用的内存。本申请实施例提供的方法能够通过感知电子设备的内存回收情况,扩大进程的查杀范围,从而回收更多的可用内存,提高回收内存的效率,保障电子设备的正常运行,提升了用户的使用体验。
Description
技术领域
本申请涉及内存管理技术领域,尤其涉及一种回收内存的方法、电子设备及存储介质。
背景技术
随着电子设备(例如智能手机、平板电脑等)的发展,电子设备已成为人们日常生活中必不可缺的物品。电子设备中的系统以及所有应用程序(Application,APP)的运行都是在内存中进行的,因此内存的大小会对电子设备的性能产生重大影响。
实践中发现,用户在刚开始使用电子设备的时候,该电子设备非常顺滑,应用程序运行起来很流畅,而在该电子设备被长期使用后,随着安装的应用程序越来越多,会产生很多无用进程和服务,并且用户使用应用程序(例如浏览网页、在线听歌等)也会产生过多的缓存,导致累计使用的内存资源过多,从而导致电子设备的可用内存变少,进而导致电子设备出现卡顿、死机、重启等故障。
通常,电子设备的操作系统中设置有内存释放机制,譬如当内存不足时,操作系统会终结不必要的进程来回收内存,以此来保障电子设备的正常运行状态。然而,相关技术中的内存回收方案存在回收效率低的问题。
发明内容
本申请提供一种回收内存的方法、电子设备及存储介质,能够通过感知电子设备的内存回收情况,扩大进程的查杀范围,从而回收更多的可用内存,提高回收内存的效率,保障电子设备的正常运行,提升了用户的使用体验。
第一方面,本申请提供了一种回收内存的方法,该方法由电子设备执行,方法包括:当检测到内存回收失败时,将第一优先级提升至第二优先级;根据第二优先级确定待查杀进程;对待查杀进程进行查杀处理,以回收待查杀进程所占用的内存。
其中,第一优先级根据内存回收失败时被查杀的进程的优先级确定。
应理解,本申请实施例中的第一优先级、第二优先级是为了在描述上与其他优先级区分,并不是限定第一优先级高于第二优先级。相反,在本申请实施方式中,第二优先级的级别高于第一优先级的级别。
可选地,在一种可能的实现方式中,内存回收失败可以指回收到的内存量小于或等于预设回收量,即对进程进行查杀处理,回收到的内存量小于或等于预设回收量时,判定内存回收失败。在另一种可能的实现方式中,内存回收失败也可以指连续多次回收到的内存量小于或等于预设回收量。在又一种可能的实现方式中,内存回收失败还可以指在预设回收周期内,连续多次回收到的内存量小于或等于预设回收量。
第一方面提供的回收内存的方法,通过感知电子设备的内存回收情况,提升优先级,并根据提升后的优先级确定更多的待查杀进程,扩大了进程的查杀范围。对这些进程进行查杀处理,可以回收更多的可用内存,提高了回收内存的效率,保障了电子设备的正常运行,提升了用户的使用体验。
一种可能的实现方式中,将第一优先级提升至第二优先级,包括:获取预设回收周期内,内存回收失败时被查杀的各个进程的优先级;将第一进程的优先级确定为第一优先级;将第一优先级提升为第二优先级。
其中,第一进程的优先级的级别高于其他进程的优先级的级别,也就是说,第一进程的优先级的级别在内存回收失败时,被查杀的各个进程的优先级的级别中最高。
应理解,在一个预设回收周期内,可能会进行一次或多次内存回收。
这种实现方式中,第一优先级是原本内存回收过程中最高的优先级,在此基础上,提升该第一优先级的级别,得到第二优先级,后续根据该第二优先级可以确定新的待查杀进程,对新的待查杀进程进行查杀/终结,实现在原本内存回收的基础上,回收更多的可用内存,从而提高回收内存的效率,保障电子设备的正常运行,提升了用户的使用体验。
一种可能的实现方式中,本申请提供的回收内存的方法,在将第一进程的优先级确定为所述第一优先级之后,还包括:根据第一时刻的内存状态确定第三优先级;根据第一优先级和第三优先级,确定第二优先级。
其中,第三优先级为第一时刻的内存状态下应当查杀的进程的优先级,第一时刻晚于预设回收周期的结束时刻。
这种实现方式中,在确定第一优先级时考虑当前时刻电子设备的内存状态,考虑到了电子设备实时的可用内存,避免盲目提升优先级,保证最终进行进程查杀时使用的优先级的级别最高,回收更多的可用内存,从而提高回收内存的效率,保障电子设备的正常运行,提升了用户的使用体验。
一种可能的实现方式中,根据第二优先级确定待查杀进程,包括:当第二优先级对应的进程中包含前台进程时,获取前台进程占用的内存;当前台进程占用的内存大于或等于预设内存阈值时,将前台进程确定为待查杀进程。
这种实现方式中,考虑到查杀前台进程会对用户造成影响,因此对前台进程做出保护,当提升级别后的优先级对应的进程中包含前台进程时,根据前台进程占用的内存大小,判断是否对前台进程进行查杀。当前台进程占用的内存异常时,才对前台进程进行查杀,保障了前台进行的安全运行,有效降低误杀率,提升了用户的使用体验。
一种可能的实现方式中,本申请提供的回收内存的方法,在将第一优先级提升至第二优先级之前,还包括:在检测到第二时刻的内存状态满足第一条件时,确定第四优先级;根据第四优先级确定进程列表;若对进程列表中的进程进行查杀处理,回收到的内存量小于或等于预设回收量时,判定内存回收失败。
其中,第二时刻早于所述预设回收周期的起始时刻;第四优先级为第二时刻的内存状态下应当查杀的进程的优先级。
可选地,第一条件可以包括:当前的可用内存小于第一阈值,和/或,当前的可回收内存页小于第二阈值。
可选地,在本申请实施方式中,可以通过Lmkd进程监控电子设备的内存状态。
这种实现方式中,当检测到电子设备的内存出现低内存情形时,对进程列表中的进程进行查杀处理,可以回收一些内存。当回收到的内存量小于或等于预设回收量时,判定内存回收失败,便于后续通过提升优先级的方式,扩大进程的查杀范围,从而回收更多的内存。
一种可能的实现方式中,本申请提供的回收内存的方法,在确定第四优先级之前,还包括:获取每个进程的运行状态;根据每个进程的运行状态,确定每个进程对应的重要程度值;根据每个进程对应的重要程度值,确定每个进程的优先级。
这种实现方式中,通过获取每个进程的运行状态,根据每个进程的运行状态,确定每个进程对应的重要程度值,再根据每个进程对应的重要程度值,确定了每个进程的优先级,为后续实现内存回收提供了保障。
一种可能的实现方式中,本申请提供的回收内存的方法,在根据每个进程对应的重要程度值,确定每个进程的优先级之后,还包括:将处于同一优先级的进程划分至同一个进程分组;根据划分后的多个进程分组确定多个进程列表。
这种实现方式中,便于对处于同一优先级的进程进行管理,有利于提高回收内存的效率。
第二方面,本申请提供了一种通信装置,该装置包含在电子设备中,该装置具有实现上述各方面及上述各方面的可能实现方式中电子设备行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块或单元。例如,第一检测单元、第一确定单元、处理单元、第二检测单元、第二确定单元以及查杀单元等。
第三方面,本申请提供一种电子设备,电子设备包括:一个或多个处理器;一个或多个存储器;安装有多个应用程序的模块;存储器存储有一个或多个程序,当一个或者多个程序被处理器执行时,使得电子设备执行上述第一方面及其任意可能的实现方式中的方法。
第四方面,本申请提供一种芯片,包括处理器。处理器用于读取并执行存储器中存储的计算机程序,以执行第一方面及其任意可能的实现方式中的方法。
可选的,芯片还包括存储器,存储器与处理器通过电路或电线连接。
可选的,芯片还包括通信接口。
第五方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储了计算机程序,当计算机程序被处理器执行时,使得该处理器执行第一方面及其任意可能的实现方式中的方法。
第六方面,本申请提供一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码在电子设备上运行时,使得该电子设备执行第一方面及其任意可能的实现方式中的方法。
上述第二方面、第三方面、第四方面、第五方面以及第六方面所获得的技术效果与上述第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
图1为本申请一示例性实施例示出的一种回收内存示意图;
图2为本申请一示例性实施例示出的电子设备的系统架构图;
图3是本申请一示例性实施例示出的电子设备的硬件结构示意图;
图4是本申请一示例性实施例示出的电子设备的软件结构框图;
图5是本申请实施例提供的一种回收内存的方法的流程示意图;
图6是本申请实施例提供的一种回收内存的方法的步骤S204的具体流程图;
图7是本申请实施例提供的一种确定第二优先级的方法的流程示意图;
图8是本申请实施例提供的一种回收内存的方法的步骤S205的具体流程图;
图9是本申请实施例提供的一种查杀前台进程的方法的流程示意图;
图10是本申请实施例提供的另一种回收内存的方法的流程示意图;
图11为本申请实施例提供的一种芯片的结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例的技术方案可以应用于电子设备,譬如应用于电子设备的操作系统中,例如Android(安卓)系统、IOS操作系统、塞班(Symbian)操作系统、黑莓(Black Berry)操作系统等。也可以应用于其他操作系统,譬如Linux操作系统、Windows操作系统等,对此不作限制。
本申请实施例的技术方案可以应用于各种通信系统。例如:全球移动通讯(Globalsystem of mobile communication,GSM)系统、码分多址(Code DivisionMultiple Access,CDMA)系统、宽带码分多址(Wideband Code Division MultipleAccess,WCDMA)系统、通用分组无线业务(General Packet Radio Service,GPRS)、长期演进(Long Term Evolution,LTE)系统、LTE频分双工(Frequency Division Duplex,FDD)系统、LTE时分双工(Time Division Duplex,TDD)、通用移动通信系统、全球互联微波接入通信系统、第五代系统(5th Generation,5G)以及新无线(New Radio,NR)系统等。
为了更好地理解本申请实施例提供的回收内存的方法,下文首先对本申请实施例中涉及的部分术语进行解释说明,以便于本领域技术人员理解。
1、内存
内存也被称为内存储器、主存储器等。
内存可以包含一个或多个随机存取存储器(Random Access Memory,RAM)。内存可以由处理器(Central Processing Unit,CPU)直接进行读写,也可以用于暂时存储操作系统或其他正在运行中的程序的可执行程序(例如机器指令),还可以用于暂时存储用户以及应用程序的数据等。
2、内存泄露(Memory Leak)
内存泄露是指在程序中动态分配的内存在使用后,由于某种原因(例如程序运行逻辑发生错误)程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
3、页
在内存管理过程中,页是地址空间的最小单位,一般一个页为4千字节(Kilobyte,KB)或者64KB。
4、内存页
内存页可以包含文件页(File-backed Page)。
其中,文件页也就是系统释放掉可以回收的内存,比如缓存和缓冲区就属于可回收内存,或称内存回收,它们在内存管理中,通常被叫做文件页。该文件页具体可以存放代码段、库文件以及程序交互所访问的文件数据等。
对于文件页来说,操作系统会为文件页提供名称标记,即在虚拟存储地址(Virtual Memory Address,VMA)上会记录其对应的文件名,根据文件名可以对不同的文件页进行区分,因此将有名称标记的系统内存页称之为文件页。在对文件页回收时,可以直接将文件页在系统内存中释放(即删除)。之后CPU若要访问该文件页,可以根据该文件页的文件名将该文件页从外存加载到系统内存中,再进行读取。
5、进程
进程是一个具有独立功能的程序,是关于某个数据集合的一次运行活动。
进程可以申请和拥有系统资源,其是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,可以通过程序计数器的值和处理寄存器的内容来表示。
从用户角度来看,进程是应用程序的一个执行过程。应理解,在通常情况下,一个应用程序对应一个进程。
6、前台进程
前台进程是指与用户正在交互的进程,通常用户可以直接看到与其交互的进程所对应的操作页面。
7、后台进程
后台进程是指隐含执行的进程,后台进程可以在后台运行。
8、运行状态
应用程序在系统中的运行状态可以分为前台运行状态和后台运行状态。
其中,前台运行状态,是指应用程序直接在电子设备显示屏的显示窗口或界面上运行,呈现出应用程序运行的当前界面,使电子设备可以与使用者(如用户)通过显示的界面互动。
后台运行状态,是指电子设备显示屏不呈现应用程序的运行界面,但该应用程序在后台继续提供服务。
应理解,对于具有可视的显示界面的应用程序来说,其可以随时从后台运行状态切换为前台运行状态,或者从前台运行状态切换为后台运行状态。
9、低内存杀手守护程序(Low Memory Killer Daemon,Lmkd)
Lmkd是一个进程,用于监视正在运行中的安卓(Android)系统的内存状态,并通过杀死/终结最不重要的进程来应对内存压力大的问题,使Android系统以可接受的性能水平运行。
以上是对本申请实施例所涉及的名词的简单介绍,以下不再赘述。
随着电子设备(例如手机、智能穿戴设备、平板电脑、个人计算机(PersonalComputer,PC)、台式计算机、笔记本电脑、大屏设备、智能电视等)的发展,电子设备已成为人们日常生活中必不可缺的物品。而内存是电子设备的重要部件之一,我们熟知的操作系统以及所有应用程序(Application,APP)的运行都是在该内存中进行的。因此,内存的大小会对电子设备的性能产生重大影响。
在实践中发现,用户刚开始在使用电子设备的时候,该电子设备的操作系统以及应用程序运行起来很流畅,而在该电子设备被长期使用后,随着操作系统内存占用越来越大、安装的应用程序越来越多以及内存泄露等原因,导致电子设备的可用内存变少,进而导致电子设备出现卡顿,响应速度慢,显示异常,退出应用,死机,甚至重启等现象,严重影响了用户的使用体验。
在相关技术中,电子设备的操作系统使用Lmkd进程来监控内存状态,当内存不足时,确定与当前内存状态对应的优先级,操作系统会清理该优先级对应的应用程序的数据,即操作系统会查杀该优先级对应的进程以回收内存,以此来保障操作系统的正常运行。
相关技术中的内存回收方案,在电子设备的可用内存很少时,会长期查杀同一优先级下的应用程序(即一直清理同一优先级下的应用程序的数据,也可以理解为一直查杀同一优先级下的进程),且该同一优先级下已经没有可有效回收的内存了,这样导致回收内存的效率低,进而导致电子设备的操作系统长期滞留在低内存状态,严重影响了电子设备的正常运行和用户的使用体验。
有鉴于此,本申请实施例提供了一种回收内存的方法,该方法可以通过感知电子设备的内存状态和内存回收情况,扩大进程的查杀范围,从而回收更多的可用内存,提高回收内存的效率,保障电子设备的正常运行,提升了用户的使用体验。
为了便于理解,下面将结合附图对本申请实施例涉及的内存进行说明。请参阅图1,图1为本申请一示例性实施例示出的一种回收内存示意图。如图1中的(a)所示,内存的大小为固定值,是由电子设备配置的硬件设备,即由前文所述的一个或多个RAM的大小决定。该内存所包含的空间可以存储操作系统或其他正在运行中的程序的可执行程序,以及存储用户、应用程序的数据等。
请参阅图1中的(b)和图1中的(c),图1中的(b)和图1中的(c)示出了内存回收机制的原理。如图1中的(b)所示,电子设备在回收内存前,内存不足,即可用内存很少。例如内存快被进程占满。
通过本申请实施例提供的回收内存的方法,可以有效解决内存不足的问题。示例性地,电子设备监控内存状态,譬如电子设备的操作系统使用Lmkd进程来监控内存状态,当监控到内存不足时,利用Lmkd进行内存回收(例如查杀某一优先级对应的进程以回收内存)。当监测到Lmkd内存回收无效(或内存回收失败)时,扩大进程的查杀范围,以此来回收更多的可用内存,从而提高回收内存的效率。
如图1中的(c)所示,电子设备在回收内存后,内存充足,即可用内存很多。例如扩大进程的查杀范围后,清理了更多的进程,从而使更多的内存被释放出来。
可以理解的是,图1中的(b)和图1中的(c)展示的内存回收机制的原理示意图仅为示意,本申请实施例对电子设备回收内存前和回收内存后,进程实际所占用的内存大小不做限定。
下面结合附图介绍本申请实施例提供的电子设备所涉及的整体架构。
请参阅图2,图2为本申请一示例性实施例示出的电子设备的系统架构图。应理解,图2仅示出了与实施例相关的部分架构,因此图2不构成对本申请实施例中的电子设备的限定。
如图2所示,电子设备的系统架构可以包括软件系统和硬件系统两部分。其中,软件系统可以包括操作系统。操作系统为管理、控制以及监控电子设备的软件、硬件资源协调运行的程序系统;操作系统作为软件系统的核心系统软件,由一系列具有不同控制和管理功能的程序组成;该操作系统可以实现电子设备的启动,内存资源的分配,数据的存储、加载和执行,确定各个进程对应的优先级,监控内存状态,以及回收内存等。
硬件系统可以包括内存、外存(磁盘)、处理器、显示屏等。其中,内存可以包含一个或多个RAM。该内存所包含的空间可以存储操作系统或其他正在运行中的程序的可执行程序,以及存储用户、应用程序的数据等。
在一个示例中,电子设备的操作系统确定各个进程的优先级,并通过Lmkd监控硬件系统中内存的状态。当监控到内存不足时,利用Lmkd进行内存回收(例如查杀与当前的内存状态对应的优先级下的进程以回收内存)。当监测到Lmkd内存回收无效(或内存回收失败)时,扩大进程的查杀范围,以此来回收更多的可用内存,从而提高回收内存的效率,保障电子设备的正常运行,提升用户的使用体验。
其中,确定各个进程的优先级的过程,可以包括以下步骤:
S101、获取每个进程的运行状态。
进程是应用程序的一个执行过程。通常情况下,一个应用程序对应一个进程。
示例性地,电子设备的操作系统可以获取处于运行状态的各个应用程序的运行状态。其中,处于运行状态是指应用程序已经启动且未被关闭,或者说,该应用程序对应的进程占有处理器正在运行。
应用程序的运行状态可以包括前台运行状态、后台运行状态以及冻结状态等。也就是说,应用程序可能处于前台运行状态,也可能处于后台运行状态,还可能被冻结。相应地,应用程序对应的进程可能是前台进程,也可能是后台进程,还可能是被冻结的进程。
应理解,当应用程序处于前台运行状态时,应用程序直接在电子设备显示屏的显示窗口或界面上运行,呈现出应用程序运行的当前界面,使电子设备可以与使用者(如用户)通过显示的界面互动。当应用程序处于后台运行状态时,电子设备显示屏不呈现应用程序的运行界面,但该应用程序在后台继续提供服务,其也会占用一定的资源,譬如内存资源、CPU资源等。当应用程序处于冻结状态时,该应用程序停止运行,不占用CPU资源,也不释放内存资源,由于冻结状态的应用程序暂时不使用,所以可以把其占用的内存页释放出来。
也就是说,电子设备的操作系统通过监听各个应用程序的运行状态,得到各个应用程序对应的进程的运行状态,即获取到各个进程的运行状态。
在一种可能的实现方式中,电子设备的操作系统可以按照预设周期监听各个应用程序的运行状态。例如,该预设周期可以设置为10秒、30秒、1分钟等。此次仅为示例性说明,对此不做限定。
S102、根据每个进程的运行状态,确定每个进程对应的重要程度值。
重要程度值用于表征应用程序所对应的进程被用户访问的概率。处于不同运行状态的各个应用程序所对应的进程,其重要程度值不同。在一个示例中,重要程度值越大,表示应用程序所对应的进程被用户访问的概率越高;重要程度值越小,表示应用程序所对应的进程被用户访问的概率越低。因此,可以根据各个进程的运行状态,确定各个进程对应的重要程度值。
在本申请的一个实施例中,可以预先设定不同运行状态下的进程所对应的重要程度值。例如,分别设置处于前台运行状态下的进程、处于后台运行状态下的进程以及处于冻结状态下的进程各自对应的重要程度值。其中,处于前台运行状态下的进程对应的重要程度值大于处于后台运行状态下的进程对应的重要程度值,处于后台运行状态下的进程对应的重要程度值大于处于冻结状态下的进程各自对应的重要程度值。
例如,处于前台运行状态下的进程对应的重要程度值可以设置为1000,处于后台运行状态下的进程对应的重要程度值可以设置为300,处于冻结状态下的进程各自对应的重要程度值可以设置为0。此处仅为示例性说明,对此不做限定。
对于应用程序来说,其可以随时从后台运行状态切换为前台运行状态,或者从前台运行状态切换为后台运行状态。前后台切换频次越高,表明该应用程序被访问的概率越高;反之,前后台切换频次越低,表明该应用程序被访问的概率越低。
同理,应用程序最近一次切换至前台的时刻(或者说该应用程序上一次切换至前台的时刻)距当前时刻的时间差越小,表明该应用程序被访问的概率越高;反之,应用程序最近一次切换至前台的时刻距当前时刻的时间差越大,表明该应用程序被访问的概率越低。因此,最近一次(或者说上一次)切换至前台的时刻能够表征该应用程序被范文的概率。
在一种可能的实现方式中,针对不同的运行状态,可以根据历史时间窗内统计的前后台切换频次,以及最近一次(或者说上一次)切换至前台的时刻距离当前时刻的时间差,在各运行状态对应的重要程度值的基础上加上一定数值,最终得到该应用程序所对应的进程的重要程度值。
例如,设置一个加分数值(如100分),根据前后台切换频次以及最近一次切换至前台的时刻距离当前时刻的时间差,确定权重系数。计算该权重系数与加分数值的乘积,得到该应用程序的进程对应的调整数值,在该应用程序的进程当前运行状态所对应的重要程度值上加上该调整数值,得到该应用程序的进程最终对应的重要程度值。
可以理解的是,本申请实施例中的权重系数可以包括两个方面,一方面在于切换频次,譬如切换频次越高权重越高;另一方面在于最近一次切换前台的时刻距离当前时刻的时间差,譬如时间差越小权重越高。
这种实现方式中,根据应用程序的前后台切换的信息调整应用程序的进程所对应的重要程度值,可使最终确定的重要程度值更准确,从而有助于后续将具有相似运行状态信息的应用程序的进程划分至同一进程分组中,便于统一对同一分组内的进程进行管理(如查杀),从而提高回收内存的效率。
S103、根据每个进程对应的重要程度值,确定每个进程的优先级。
示例性地,在一种可能的实现方式中,重要程度值与优先级正相关,譬如重要程度值越大,被用户访问的概率越高,其对应的优先级越高;反之,重要程度值越小,被用户访问的概率越低,其对应的优先级越低。
在本申请的一个实施例中,可以预先设定重要程度值与优先级之间的映射关系,根据该映射关系确定各个进程对应的优先级。
示例性地,可以设定一个重要程度值对应一个优先级,或者,也可以设定属于同一区间内的重要程度值对应一个优先级。
例如,多个进程对应的重要程度值相同,即同一个重要程度值对应多个不同的进程。这种情况下,可以设定一个重要程度值对应一个优先级,不同的重要程度值对应不同的优先级。譬如进程1、进程2以及进程3各自对应的重要程度值相同,则确定进程1、进程2以及进程3的优先级相同。
又例如,各个进程对应的重要程度值相对分散,这种情况下,可以设定属于同一区间内的重要程度值对应一个优先级。譬如优先级4对应的区间为300~350,进程1对应的重要程度值为310,进程2对应的重要程度值为320,进程3对应的重要程度值为330,那么可以确定进程1、进程2以及进程3的优先级相同,均为优先级4。
这种实现方式中,通过获取每个进程的运行状态,根据每个进程的运行状态,确定每个进程对应的重要程度值,再根据每个进程对应的重要程度值,确定了每个进程的优先级,为后续实现内存回收提供了保障。
可选地,在一种可能的实现方式中,为了便于对处于同一优先级的进程进行管理,提高回收内存的效率,在上述步骤S103之后,还可包括S104、S105。
S104、将处于同一优先级的进程划分至同一个进程分组。
同一优先级可能对应一个或多个进程。示例性地,根据进程的不同优先级,将多个进程划分为不同的组。例如,在一种可能的实现方式中,可以将处于同一优先级的进程划分至同一个进程分组中。
可选地,在另一种可能的实现方式中,可以将处于相邻的两个优先级的进程划分至同一个进程分组中。
例如,进程1、进程2以及进程3均对应优先级3,则将进程1、进程2以及进程3划分为一个进程分组,譬如进程分组1。进程4、进程5以及进程6均对应优先级2,则将进程4、进程5以及进程6划分为一个进程分组,譬如进程分组2。此次仅为示例性说明,对此不做限定。
可以理解的是,随着用户与应用程序之间进行的交互操作,应用程序的状态可能会发生变化。例如,从后台运行状态切换为前台运行状态,或者从前台运行状态切换为后台运行状态。因此,应用程序的进程所对应的优先级也是动态变化的。
例如,用户打开音乐APP选择播放某首歌曲后,将音乐APP切换至后台,此时用户又打开了图库APP查看照片。在该场景中,图库APP一直运行在前台,音乐APP一直运行在后台,那么此时图库APP的优先级高于音乐APP;而当用户再次打开音乐APP切换歌曲时,该音乐APP切换至前台,图库APP切换至后台,这种场景下,音乐APP的优先级高于图库APP。此次仅为示例性说明,对此不做限定。
S105、根据划分后的多个进程分组确定多个进程列表。
示例性地,可以根据多个进程分组设置多个进程列表,并通过每个进程分组维护其对应的进程列表。每个进程列表可以包括其对应的进程分组中每个进程的标识,还可以包括每个进程所占用的内存页。这种实现方式,有助于统一对同一进程列表内的进程进行管理(如查杀),从而提高回收内存的效率。
电子设备的操作系统确定各个进程的优先级后,当监控到内存不足时,利用Lmkd进行内存回收(例如查杀与当前的内存状态对应的优先级下的进程以回收内存)。当监测到Lmkd内存回收无效(或内存回收失败)时,扩大进程的查杀范围,以此来回收更多的可用内存,从而提高回收内存的效率,保障电子设备的正常运行,提升用户的使用体验。
上面对本申请实施例提供的电子设备所涉及的整体架构,以及确定各个进程的优先级的过程进行了描述,下面将结合附图对本申请实施例中涉及的电子设备的硬件结构进行简单介绍。
本申请实施例中的电子设备可以是手机、平板电脑、可穿戴设备、车载设备、增强现实(Augmented Reality,AR)/虚拟现实(Virtual Reality,VR)设备、手持计算机、笔记本电脑、超级移动个人计算机(Ultra-Mobile Personal Computer,UMPC)、上网本、个人数字助理(Personal Digital Assistant,PDA)等安装应用程序的设备,本申请实施例对该电子设备的具体类型和形态不作任何限制。
请参考图3,图3是本申请一示例性实施例示出的电子设备的硬件结构示意图。
如图3所示,电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图3所示的部件更多或更少的部件,或者,电子设备100可以包括图3所示的部件中某些部件的组合,或者,电子设备100可以包括图3所示的部件中某些部件的子部件。图3所示的部件可以以硬件、软件、或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在本申请的实施例中,处理器110可以执行确定第一应用对应的弹窗路径的数量;当检测到数量大于预设阈值时,确定弹窗路径对应的弹窗为广告弹窗的步骤。譬如处理器110可以运行本申请实施例提供的识别广告弹窗的方法的软件代码,从而准确地判断出广告弹窗。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器(mobileindustry processor interface,MIPI)接口,通用输入输出(general-purpose input/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备100供电。
电源管理模块141用于连接电池142、充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,以及无线通信模块160等供电。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
图3所示的各模块间的连接关系只是示意性说明,并不构成对电子设备100的各模块间的连接关系的限定。可选地,电子设备100的各模块也可以采用上述实施例中多种连接方式的组合。
电子设备100的无线通信功能可以通过天线1、天线2、移动通信模块150、无线通信模块160、调制解调处理器以及基带处理器等器件实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/2G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。可以理解,本申请实施例中,定位或导航系统中的硬件模块可称为定位传感器。
电子设备100可以通过GPU、显示屏194以及应用处理器实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU还可以用于执行数学和位姿计算,用于图形渲染等。处理器110可以包括一个或多个GPU,其执行程序指令可以生成或改变显示信息。
显示屏194可以用于显示图像或视频,还可以显示一系列图形用户界面(graphical user interface,GUI),这些GUI都是该电子设备100的主屏幕。一般来说,电子设备100的显示屏194的尺寸是固定的,只能在该电子设备100的显示屏194中显示有限的控件。控件是一种GUI元素,它是一种软件组件,包含在应用程序中,控制着该应用程序处理的所有数据以及关于这些数据的交互操作,用户可以通过直接操作(direct manipulation)来与控件交互,从而对应用程序的有关信息进行读取或者编辑。一般而言,控件可以包括图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、微件(Widget)等可视的界面元素。
在本申请实施例中,显示屏194可以用于显示各个应用程序对应的界面。
显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystaldisplay,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N可以为大于1的正整数。
本申请实施例中的显示屏194可以是触摸屏。该显示屏194中可以集成有触摸传感器180K。该触摸传感器180K也可以称为“触控面板”。也就是说,显示屏194可以包括显示面板和触摸面板,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触控操作。触摸传感器180K检测到的触摸操作后,可以由内核层的驱动(如TP驱动)传递给上层,以确定触控事件类型。可以通过显示屏194提供与触控操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统(如图2所示的软件系统中的操作系统)、至少一个功能所需的APP(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。
此外,内部存储器121可以包括高速随机存取存储器,如图2所示的硬件系统中的内存;内部存储器121还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(Universal Flash Storage,UFS)等。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。
加速度传感器180E可检测电子设备100在各个方向上(一般为x轴、y轴和z轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。加速度传感器180E还可以用于识别电子设备100的姿态,作为横竖屏切换和计步器等应用程序的输入参数。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现解锁、访问应用锁、拍照和接听来电等功能。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。
另外,在上述部件之上,运行有各种类型的操作系统。例如Android(安卓)系统、IOS操作系统、塞班(Symbian)操作系统、黑莓(Black Berry)操作系统、Linux操作系统、Windows操作系统等。此处仅为示例性说明,对此不做限定。在这些操作系统上可以安装、运行应用程序。
本申请实施例中提供的回收内存的方法,可以在具有上述硬件结构的电子设备100中实现。
上面对本申请实施例涉及的电子设备100的硬件结构进行了简单介绍,下面对本申请实施例涉及的电子设备的软件结构进行简单介绍。请参考图4,图4是本申请一示例性实施例示出的电子设备的软件结构框图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,以电子设备100是Android系统为例进行说明,Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android Runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。如图4所示,应用程序包可以包括相机、日历、地图、无线局域网(wireless local area networks,WLAN)、音乐、短信息、购物、聊天、浏览器、清理应用等应用程序,还可以包括其他未示出的应用程序。
Android的框架(Framework)是应用程序层之下的一层,叫做应用程序框架层。该应用程序框架层为应用程序层的应用程序提供应用编程接口(Application ProgrammingInterface,API)和编程框架。应用程序框架层可以包括一些预先定义的函数。
作为本申请的一个示例,如图4所示,应用程序框架层可以包括应用程序管理模块。该应用程序管理模块用于管理应用程序,例如,可以通过该应用程序管理模块记录各个应用程序的运行状态(如前台运行状态、后台运行状态以及冻结状态等),还可以记录各个应用程序前后台切换次数和切换时间等信息。
应用程序框架层还可以包括优先级管理模块。该优先级管理模块可以获取应用程序管理模块记录的各个应用程序的运行状态,得到各个应用程序对应的进程的运行状态。根据各个进程的运行状态,确定各个进程对应的重要程度值。根据各个进程对应的重要程度值,确定各个进程的优先级。
可选地,在一种可能的实现方式中,该优先级管理模块还可以将处于同一优先级的进程划分至同一个进程分组中。
可选地,在一种可能的实现方式中,该优先级管理模块还可以根据划分后的多个进程分组确定多个进程列表。
可选地,应用程序框架层还可以包括内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问,这些数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统可以包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序的显示界面,显示界面可以由一个或多个视图组成,比如,包括显示短信通知图标的视图,包括显示文字的视图,以及包括显示图片的视图。
电话管理器用于提供电子设备100的通信功能,例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,例如本地化字符串,图标,图片,布局文件,视频文件等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。例如,通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或滚动条文本形式出现在系统顶部状态栏的通知,比如后台运行的应用程序的通知。通知管理器还可以是以对话窗口形式出现在屏幕上的通知,比如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android Runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块,比如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(比如:OpenGL ES),2D图形引擎(比如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层可以包括内存管理模块。该内存管理模块可以在电子设备的操作系统中执行回收内存的操作,对正在运行的各个应用程序的进程所占用的内存进行管理,保证电子设备操作系统的正常运行。可以理解的是,该内存管理模块可以是运行在内核层的软件模块。
可选地,内核层还可以包括显示驱动,显示驱动可用于显示不同的窗口,譬如显示各个应用程序对应的窗口。
可选地,内核层还可以包括摄像头驱动,音频驱动、传感器驱动等。
上面对本申请实施例涉及的电子设备的软件结构进行了简单介绍,下面本申请各实施例将以电子设备为例,结合附图和应用场景,对本申请实施例提供的回收内存的方法进行具体阐述。
请参阅图5,图5是本申请实施例提供的一种回收内存的方法的流程示意图。该方法包括:
S201、在检测到第二时刻的内存状态满足第一条件时,确定与第二时刻的内存状态匹配的第四优先级。
示例性地,电子设备的操作系统使用Lmkd进程监控当前内存状态。当检测到电子设备的内存出现低内存情形时,即检测到当前内存状态(即第二时刻的内存状态)满足第一条件时,确定第四优先级。
在本申请实施方式中,第二时刻可以为开始执行一轮回收内存的方法时的时刻。
第四优先级为第二时刻的内存状态下应当查杀的进程的优先级。
第一条件可以为:当前的可用内存小于第一阈值,和/或,当前的可回收内存页小于第二阈值。
值得说明的是,本申请实施例中的第四优先级是为了在描述上与其他优先级区分,并不限定优先级的级别。
示例性地,预先建立不同的内存状态与各个优先级之间的映射关系。应理解,优先级的级别可以根据电子设备的实际情况进行设置、调整。例如,在本实施方式中,优先级的级别可以包括0~15级。数值越小,表示优先级越高,应用程序所对应的进程被用户访问的概率越高;反之,数值越大,表示优先级越低,应用程序所对应的进程被用户访问的概率越低。根据该映射关系可以确定与当前内存状态匹配的目标优先级。
应理解,通常对优先级低的进程先进行查杀/终结,对优先级高的进程后进行查杀/终结,以实现在回收内存的同时,保证用户的使用体验。
S202、根据第四优先级确定进程列表。
电子设备的操作系统在确定各个进程的优先级时,将处于同一优先级的进程划分至同一个进程分组中,并为每个进程分组设置了进程列表。因此,每个优先级都有对应的进程列表。该进程列表中包括一个或多个应用程序的进程,每个进程都有对应的标识信息,以及其所占用的内存页。
根据第四优先级的级别,确定与其对应的进程列表,从而得到该进程列表中的一个或多个应用程序的进程,即得到一个或多个待查杀进程。由于查杀/终结这些进程是为了回收内存,因此也可将这些进程称为待回收进程。
可选地,在一种可能的实现方式中,操作系统会给每个进程配置一个oom_score_adj参数,该参数用于表示每个进程的优先级。在确定第四优先级后,可以根据oom_score_adj参数,获取符合第四优先级的级别的进程,即得到一个或多个待查杀进程。
S203、对该进程列表中的进程进行查杀处理,以回收该进程列表中的进程所占用的内存。
示例性地,对该进程列表中的进程进行初次查杀处理。例如,通过Lmkd将这些进程查杀/终结,之后,这些进程所占用的内存将被释放出来,Lmkd回收这些进程所占用的内存。
可选地,在一种可能的实现方式中,根据本次查杀处理回收到的内存量,判断本次内存回收是否为内存回收失败。
在一个示例中,内存回收失败可以指回收到的内存量小于或等于预设回收量,即对进程列表中的进程进行查杀处理,回收到的内存量小于或等于预设回收量时,判定内存回收失败。在另一个示例中,内存回收失败也可以指连续多次回收到的内存量小于或等于预设回收量。在又一个示例中,内存回收失败还可以指在预设回收周期内,连续多次回收到的内存量小于或等于预设回收量。
其中,预设回收周期、预设回收量以及回收次数可以根据实际情况进行设置、调整,例如,在本实施方式中,预设回收周期可以设置为3秒、5秒、10秒等,预设回收量可以设置为0MB、2MB等。通常,第二时刻早于预设回收周期的起始时刻。
譬如在一种应用场景中,在预设回收周期内,连续多次回收到的内存量为0MB,或者说连续多次都没有回收到内存,此时可判定内存回收失败。统计预设回收周期内,内存回收失败的次数,可以增强电子设备对内存回收失败的场景的感知能力,有利于电子设备在短时间内快速执行后续流程,即触发查杀进程的操作,从而使电子设备快速恢复内存。
值得说明的是,在一般情况下,当检测到电子设备的内存出现低内存情形时,通过上述S201至S203中描述的方法即可回收一些内存,但是当电子设备的可用内存很少,或者循环几次上述S201至S203中描述的方法后,可能会出现长期查杀同一优先级下的进程,然而该同一优先级下已经没有可有效回收的内存了,这样导致回收内存的效率低,进而导致电子设备的操作系统长期滞留在低内存状态,严重影响了电子设备的正常运行和用户的使用体验。因此,这种情况下可执行下面S204至S206中描述的方法,具体如下。
S204、当检测到内存回收失败时,将第一优先级提升至第二优先级。
示例性地,电子设备的操作系统使用Lmkd进程监控当前内存状态。当检测到电子设备的内存出现低内存情形时,即检测到当前内存状态(即第二时刻的内存状态)满足第一条件时,确定第四优先级;根据第四优先级确定进程列表;对该进程列表中的进程进行初次查杀处理,以回收该进程列表中的进程所占用的内存。这种情况下,若回收到的内存量小于或等于预设回收量,譬如回收到的内存量为0MB,则可判定内存回收失败。此时,可扩大进程的查杀范围,这样可以在初次查杀处理的基础上,可以确定更多的待查杀进程。对这些待查杀进程进行查杀处理后,可以回收更多的可用内存,从而提高回收内存的效率。
示例性地,扩大进程的查杀范围的方式可以为提升查杀级别。查杀级别表示被查杀的进程的优先级的级别。例如,原本查杀级别为优先级4,提升后查杀级别为优先级3。又例如,原本查杀级别为优先级4,提升后查杀级别为优先级2。此处仅为示例性说明,对此不做限定。这样可以在初次查杀处理的基础上,根据提升后的优先级的级别确定更多的待查杀进程。
在本申请实施方式中,提升查杀级别的方式具体可以为将第一优先级提升至第二优先级。其中,第一优先级根据内存回收失败时被查杀的进程的优先级确定,第二优先级的级别高于第一优先级的级别。
值得说明的是,在上述步骤S201至步骤S203中确定了第四优先级,并对第四优先级对应的进程进行了查杀处理,若根据这次查杀处理回收到的内存量判定这次内存回收失败,那么第一优先级便是根据内存回收失败时被查杀的进程的优先级确定的。也就是说,在这种实现方式中,第四优先级与第一优先级相同。
应理解,本申请实施例中的第一优先级、第二优先级是为了在描述上与其他优先级区分,并不是限定第一优先级高于第二优先级。相反,在本申请实施方式中,第二优先级的级别高于第一优先级的级别。例如,第一优先级的级别为5级,提升第一优先级的级别后,第二优先级的级别为4级。应理解,数值越小,表示优先级越高;反之,数值越大,表示优先级越低。
S205、根据第二优先级确定待查杀进程。
不同的优先级对应一个或多个进程,当提升优先级的级别后,根据提升级别后的优先级,可以确定新的待查杀进程,相当于在步骤S203中查杀的进程基础上,确定了更多的待查杀进程。
S206、对待查杀进程进行查杀处理,以回收待查杀进程所占用的内存。
示例性地,对待查杀进程进行查杀处理,指对这些待查杀进程执行杀进程操作。例如,通过Lmkd将这些待查杀进程查杀/终结,之后,这些待查杀进程所占用的内存将被释放出来,Lmkd回收这些待查杀进程所占用的内存。
这种实现方式中,通过感知电子设备的内存回收情况,提升优先级,并根据提升后的优先级确定更多的待查杀进程,扩大了进程的查杀范围。对这些进程进行查杀处理,可以回收更多的可用内存,提高了回收内存的效率,保障了电子设备的正常运行,提升了用户的使用体验。
请参见图6,图6是本申请实施例提供的一种回收内存的方法的步骤S204的具体流程图,上述S204可包括S2041~S2043,具体如下。
S2041、获取预设回收周期内,内存回收失败时被查杀的各个进程的优先级。
示例性地,在回收内存的过程中,会返回pages_freed参数,该参数用于表示回收到的内存量。例如,返回的pages_freed的值为0,表示回收到的内存量为0MB。又例如,返回的pages_freed的值为10,表示回收到的内存量为10MB。
在预设回收周期内,每次内存回收失败时,譬如每次返回的pages_freed的值为0时,记录这次内存回收失败的时间,以及记录这次内存回收失败时被查杀的各个进程的优先级。其中,预设回收周期可以用T表示,每次内存回收失败的时间可以用t表示。
示例性地,在一个预设回收周期内,当t小于T时,记录内存回收失败时被查杀的各个进程的优先级。可以理解的是,在一个预设回收周期内,可能会进行一次或多次内存回收。这个次数可以根据每次内存回收时需要消耗的时间进行设置、调整,对此不做限定。
S2042、将第一进程的优先级确定为第一优先级。
第一进程的优先级的级别高于其他进程的优先级的级别,也就是说,第一进程的优先级的级别在内存回收失败时,被查杀的各个进程的优先级的级别中最高。相应地,第一优先级的级别高于内存回收失败时所采用的其他优先级的级别。
示例性地,在一个预设回收周期内,当t小于T时,根据记录的多个内存回收失败时使用的各个优先级,确定出该预设回收周期内,内存回收失败时对应的最高优先级,即第一优先级。
在一个示例中,可以在记录到本次内存回收失败所使用的优先级后,与前一次记录的内存回收失败所使用的优先级进行比较,保留优先级高的结果,该结果将与下一次记录的内存回收失败所使用的优先级进行比较,再次保留优先级高的结果,循环执行该操作,直至本次预设回收周期结束,即直至t大于或等于T。最终得到的结果即为第一优先级。
例如,在t小于T时,记录每次内存回收失败所使用的优先级,在本实施方式中用oom_score_adj参数表示优先级。将其与已保留的结果(如前一次记录的内存回收失败所使用的优先级)进行比较,保留本次比较过程中最小的数值。譬如min_score_adj=min(min_score_adj,oom_score_adj)。可以理解的是,数值越小,表示优先级越高;反之,数值越大,表示优先级越低。因此,想要保留优先级高的结果,需要取两者之中最小的数值。
将保留的最小的数值与下一次记录的内存回收失败所使用的优先级的数值进行比较,再次保留最小的数值,循环执行该操作,直至本次预设回收周期结束,即直至t大于或等于T。最终得到的数值代表的优先级即为第一优先级。
在另一个示例中,在一个预设回收周期内,记录每次内存回收失败时使用的优先级,比较多个内存回收失败时使用的优先级之间的大小,筛选出该预设回收周期内,内存回收失败时使用的最高的优先级,即第一优先级。
例如,在t小于T时,记录每次内存回收失败所使用的优先级,比较多个内存回收失败时使用的优先级之间的大小,保留本次比较过程中最小的数值,该最小的数值代表的优先级即为第一优先级。
S2043、将第一优先级提升为第二优先级。
示例性地,在一种可能的实现方式中,确定出预设回收周期内,内存回收失败时对应的第一优先级后,提升该第一优先级的级别,得到第二优先级。
值得说明的是,每次提升的级别可以根据实际情况进行设置、调整,对此不做限定。例如,可以在第一优先级的基础上,将其级别提升一级、二级等。譬如第一优先级为4级,提升该第一优先级的级别后,得到的第二优先级为3级。又譬如第一优先级为4级,提升该第一优先级的级别后,得到的第二优先级为2级。此次仅为示例性说明,对此不做限定。
这种实现方式中,第一优先级是原本内存回收过程中最高的优先级,在此基础上,提升该第一优先级的级别,得到第二优先级,后续根据该第二优先级可以确定新的待查杀进程,对新的待查杀进程进行查杀/终结,实现在原本内存回收的基础上,回收更多的可用内存,从而提高回收内存的效率,保障电子设备的正常运行,提升了用户的使用体验。
可选地,在另一种可能的实现方式中,在一个预设回收周期内,当t大于或等于T时,判断第一优先级是否为操作系统设置的内存回收(或称内存查杀)的最高级。
值得说明的是,在本实施方式中,操作系统设置的内存回收的最高级指前台进程对应的优先级。例如,前台进程对应的优先级为最高级:0级。
当第一优先级等于操作系统设置的内存回收的最高级时,将第一优先级作为第二优先级。例如,当min_score_adj=0时,score1=min_score_adj。其中,score1表示第二优先级。
当第一优先级小于操作系统设置的内存回收的最高级时,提升第一优先级的级别,将提升后的级别作为第二优先级。例如,当min_score_adj>0时,score1=min_score_adj+1。应理解,min_score_adj的值大于0,表示min_score_adj对应的优先级小于操作系统设置的内存回收的最高级。
这种实现方式中,当第一优先级等于操作系统设置的内存回收的最高级时,证明当前查杀的级别已经是最高级别了,此时不需要提升级别了,因此将第一优先级作为第二优先级。当第一优先级小于操作系统设置的内存回收的最高级时,可以提升第一优先级的级别,得到第二优先级,根据该第二优先级可以确定新的待查杀进程,对新的待查杀进程进行查杀/终结,实现在原本内存回收的基础上,回收更多的可用内存,从而提高回收内存的效率,保障电子设备的正常运行,提升了用户的使用体验。
可选地,在一种可能的实现方式中,在确定第二优先级之后,比较第二优先级与操作系统中在回收内存时已使用的优先级之间的大小。
若该第二优先级小于或等于操作系统中在回收内存时已使用的优先级,则继续采用已使用的优先级进行内存回收。例如,若score1大于或等于已使用的oom_score_adj,则没有必要更新该已使用的oom_score_adj,继续执行原有的内存回收流程。其中,score1表示第二优先级。应理解,score1的值大于或等于已使用的oom_score_adj的值,表示第二优先级小于或等于已使用的优先级。
这种实现方式中,若第二优先级小于或等于操作系统中在回收内存时已使用的优先级,表示原本使用的优先级高于当前确定的第二优先级,因此使用原本的优先级反而可以回收更多的可用内存,提高回收内存的效率。
若该第二优先级大于操作系统中在回收内存时已使用的优先级,则提升第一优先级的级别,将提升后的级别作为第二优先级。例如,若score1小于已使用的oom_score_adj,则score1等于已使用的oom_score_adj+1,即更新已使用的oom_score_adj。应理解,score1的值小于已使用的oom_score_adj的值,表示第二优先级大于已使用的优先级。
这种实现方式中,若该第二优先级大于操作系统中在回收内存时已使用的优先级,则提升第一优先级的级别,得到第二优先级,根据该第二优先级可以确定新的待查杀进程,对新的待查杀进程进行查杀/终结,实现在原本内存回收的基础上,回收更多的可用内存,从而提高回收内存的效率。且有效避免了低内存场景下没有可查杀的进程导致电子设备异常的情况,有效保障了电子设备的正常运行,提升了用户的使用体验。
可选地,在初次进行查杀处理时,也消耗了一定时间,为了避免在这段时间电子设备的内存状态有新的变化,导致确定的第二优先级不准确。因此,在确定第二优先级时考虑当前时刻电子设备的内存状态。
示例性地,获取预设回收周期内,内存回收失败时被查杀的各个进程的优先级;将第一进程的优先级确定为第一优先级;根据第一时刻的内存状态确定第三优先级;根据第一优先级和第三优先级,确定第二优先级。
其中,第三优先级为第一时刻的内存状态下应当查杀的进程的优先级,第一时刻晚于预设回收周期的结束时刻。
可以理解为,先获取预设回收周期内,内存回收失败时被查杀的各个进程的优先级;确定该预设回收周期内,内存回收失败时对应的最高优先级,即第一优先级;先对该第一优先级进行提升,得到初步确定的第二优先级;同时统计第一时刻的内存状态(譬如统计当前时刻下的可用内存和/或可回收内存);根据第一时刻的内存状态确定第三优先级。其中,第一时刻的内存状态对应的第三优先级,根据预先建立的不同的内存状态与各个优先级之间的映射关系确定。
值得说明的是,这里对第一优先级提升后得到的初步确定的第二优先级,并不一定是最终执行查杀进程操作所对应的第二优先级,还需要将初步确定的第二优先级与第三优先级比较,将比较结果中优先级高的那个作为最终的第二优先级。
例如,比较本实施方式中初步确定的第二优先级与第一时刻下的内存状态匹配的第三优先级之间的大小,并保留本次比较过程中最小的数值,最小的数值对应的优先级即为最终的第二优先级。在本实施方式中,譬如将初步确定的第二优先级记为score1,将第三优先级记为score2。通过比较score1和score2的值,确定第一时刻下最高的oom_score_adj。其中,oom_score_adj=min(score1,score2)。例如,初步确定的第二优先级的级别高于第三优先级的级别,即score1小于score2,此时,该初步确定的第二优先级即为最终的第二优先级,也就是说,最终根据该第二优先级执行查杀进程的操作。
又例如,初步确定的第二优先级的级别低于第三优先级的级别,即score1大于score2,此时,该第三优先级为最终的第二优先级,也就是说,最终根据第三优先级执行查杀进程的操作。可以理解的是,数值越小,表示优先级越高;反之,数值越大,表示优先级越低。因此,想要最终的优先级的级别高,需要取两者之中最小的数值。
这种实现方式中,在确定第二优先级时考虑当前时刻电子设备的内存状态,考虑到了电子设备实时的可用内存,避免盲目提升优先级,保证最终进行进程查杀时使用的优先级的级别最高,回收更多的可用内存,从而提高回收内存的效率,保障电子设备的正常运行,提升了用户的使用体验。
可选地,在一种可能的实现方式中,本申请实施例还提供了一种确定第二优先级的方法。请参见图7,图7是本申请实施例提供的一种确定第二优先级的方法的流程示意图。
该确定第二优先级的方法可以包括:判断内存回收失败的时间t是否小于预设回收周期T。当t小于T时,比较每次内存回收失败时使用的各个优先级之间的大小;当t大于或等于T时,将第一进程的优先级确定为第一优先级。根据第一时刻的内存状态确定第三优先级;根据第一优先级和第三优先级,确定第二优先级。
示例性地,在一个预设回收周期内,当t小于T时,根据记录的多个内存回收失败时使用的各个优先级,比较这些优先级之间的大小。在每次比较过程中,保留优先级高的结果,直至t大于或等于T时,将第一进程的优先级确定为第一优先级。紧接着统计第一时刻的内存状态(譬如统计当前时刻下的可用内存和/或可回收内存);根据第一时刻的内存状态确定第三优先级。比较第一优先级与第一时刻下的内存状态匹配的第三优先级之间的大小,并保留本次比较过程中最小的数值,即保留本次比较过程中高的优先级,并将保留的该优先级确定为第一优先级。提升此时确定的第一优先级的级别,得到第二优先级;根据第二优先级确定待查杀进程;对待查杀进程进行查杀处理,以回收待查杀进程所占用的内存。
这种实现方式中,在确定第一优先级时考虑当前时刻电子设备的内存状态,考虑到了电子设备实时的可用内存,避免盲目提升优先级,保证最终进行进程查杀时使用的优先级的级别最高,回收更多的可用内存,从而提高回收内存的效率,保障电子设备的正常运行,提升了用户的使用体验。
请参见图8,图8是本申请实施例提供的一种回收内存的方法的步骤S205的具体流程图,上述S205可包括S2051~S2052,具体如下。
S2051、当第二优先级对应的进程中包含前台进程时,获取前台进程占用的内存。
在一个示例中,若第二优先级对应的进程中不包含前台进程,或者说第二优先级对应的进程为后台进程和/或被冻结的进程,则直接对第二优先级对应的进程进行查杀操作。例如,最终的oom_score_adj>0,则说明第二优先级对应的进程为后台进程和/或被冻结的进程,此时查杀第二优先级对应的进程。
可以理解的是,oom_score_adj的值大于0,说明第二优先级小于操作系统设置的内存回收的最高级(如0级),此时待查杀进程中不包含前台进程,可直接进行查杀操作。
在另一个示例中,若第二优先级对应的进程中包含前台进程,或者说第二优先级对应的进程为前台进程,此时若直接对前台进程进行查杀,会对用户造成影响,因此需要对前台进程做出保护。可获取前台进程占用的内存,根据前台进程占用的内存大小,判断是否对前台进程进行查杀。
S2052、当前台进程占用的内存大于或等于预设内存阈值时,将前台进程确定为待查杀进程。
示例性地,通过Lmkd遍历每个前台进程,对于每个前台进程,计算其占用的内存。当前台进程占用的内存大于或等于预设内存阈值时,证明该前台进程占用的内存异常(即该前台进程占用的内存过大),需要对该前台进程进行查杀,此时将该前台进程确定为待查杀进程。
其中,预设内存阈值可根据电子设备的实际情况进行设置、调整。例如,在本实施方式中,预设内存阈值可以设置为电子设备总的内存大小的一半。
示例性地,在本实施方式中,可以将前台进程记为P,将该前台进程占用的内存记为R(P),将电子设备总的内存大小记为M,将占用内存最大的前台进程所占用的内存记为R_max。例如,当R_max≥M/2时,将该前台进程确定为待查杀进程,后续将对该前台进程进行查杀。当R_max<M/2时,不会将该前台进程确定为待查杀进程,后续也不会对该前台进程进行查杀。
相关技术中,通过Lmkd对前台进程进行查杀时,通常是在可用内存以及可回收内存小于一定阈值时,对前台进程进行查杀。例如,在可用内存小于72MB,且可回收内存小于72MB时,对前台进程进行查杀。本申请实现方式中,考虑到查杀前台进程会对用户造成影响,因此对前台进程做出保护,当提升级别后的优先级对应的进程中包含前台进程时,根据前台进程占用的内存大小,判断是否对前台进程进行查杀。当前台进程占用的内存异常时,才对前台进程进行查杀,保障了前台进行的安全运行,有效降低误杀率,提升了用户的使用体验。
可选地,在一种可能的实现方式中,本申请实施例还提供了一种查杀前台进程的方法。请参见图9,图9是本申请实施例提供的一种查杀前台进程的方法的流程示意图。
该查杀前台进程的方法可以包括:判断第二优先级对应的进程中是否包含前台进程;当第二优先级对应的进程中包含前台进程时,统计每个前台进程所占用的内存;确定占用的内存最大的目标前台进程;判断该目标前台进程占用的内存是否大于或等于预设内存阈值;当目标前台进程占用的内存大于或等于预设内存阈值时,查杀该目标前台进程。
示例性地,若第二优先级为操作系统设置的内存回收的最高级时,判定第二优先级对应的进程中包含前台进程。在不同的实现场景中,前台进程可能为一个或多个,因此统计每个前台进程所占用的内存。比较各个前台进程所占用的内存之间的大小,确定出占用的内存最大的前台进程,即为目标前台进程。
当目标前台进程占用的内存大于或等于预设内存阈值时,证明该目标前台进程占用的内存异常(即该目标前台进程占用的内存过大),需要对该目标前台进程进行查杀处理,此时将该目标前台进程确定为待查杀进程,之后查杀该目标前台进程。
本申请实现方式中,考虑到查杀前台进程会对用户造成影响,因此对前台进程做出保护,当提升级别后的优先级对应的进程中包含前台进程时,根据前台进程占用的内存大小,判断是否对前台进程进行查杀。若前台进程有多个,则对内存占用最大的前台进程进行查杀,保障了其余前台进行的安全运行,有效降低误杀率,保证用户的使用体验。
可选地,为了便于理解,请参阅图10,图10是本申请实施例提供的另一种回收内存的方法的流程示意图。
该回收内存的方法可以包括:监控电子设备的内存状态。若第二时刻的内存状态未满足第一条件,则继续监控电子设备的内存状态;若第二时刻的内存状态满足第一条件,则确定与第二时刻的内存状态匹配的第四优先级。对第四优先级对应的进程进行查杀处,以回收第四优先级对应的进程所占用的内存;判断内存回收失败的时间t是否小于预设回收周期T;当t大于或等于T时,确定第二优先级;当第二优先级对应的进程中包含前台进程,且前台进程占用的内存大于或等于预设内存阈值时,将前台进程确定为待查杀进程。对待查杀进程进行查杀处理,以回收待查杀进程所占用的内存。
示例性地,电子设备的操作系统使用Lmkd进程监控当前内存状态。当检测到电子设备的内存出现低内存情形时,即检测到当前内存状态(即第二时刻的内存状态)满足第一条件时,确定第四优先级。若第二时刻的内存状态未满足第一条件,则继续监控电子设备的内存状态。
根据第四优先级确定进程列表,对该进程列表中的进程进行查杀处理,以回收该进程列表中的进程所占用的内存。当检测到内存回收失败时,判断内存回收失败的时间t是否小于预设回收周期T。在一个预设回收周期内,当t小于T时,根据记录的多个内存回收失败时使用的各个优先级,比较这些优先级之间的大小。在每次比较过程中,保留优先级高的结果,直至t大于或等于T时,确定第二优先级。值得说明的是,确定第二优先级的方式可以参考上面对图6和图7各自对应的实施例中的描述,此处不再赘述。
在一个示例中,确定第二优先级后,对第二优先级对应的进程进行查杀处理,以回收第二优先级对应的进程所占用的内存。
在另一个示例中,确定第二优先级后,判断第二优先级对应的进程中是否包含前台进程。当第二优先级对应的进程中包含前台进程时,获取前台进程占用的内存;当前台进程占用的内存大于或等于预设内存阈值时,将前台进程确定为待查杀进程;对待查杀进程进行查杀处理,以回收待查杀进程所占用的内存,即回收前台进程所占用的内存。
本申请实施例提供的回收内存的方法,可以通过感知电子设备的内存状态和内存回收情况,扩大进程的查杀范围,从而回收更多的可用内存,提高回收内存的效率,保障电子设备的正常运行,提升了用户的使用体验。
上文详细介绍了本申请实施例提供的回收内存的方法的示例。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分为各个功能模块,例如第一检测单元、第一确定单元、处理单元、第二检测单元、第二确定单元以及查杀单元等,也可以将两个或两个以上的功能集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本实施例提供的电子设备,用于执行上述回收内存的方法,因此可以达到与上述实现方法相同的效果。
在采用集成的单元的情况下,电子设备还可以包括处理模块、存储模块和通信模块。其中,处理模块可以用于对电子设备的动作进行控制管理。存储模块可以用于支持电子设备执行存储程序代码和数据等。通信模块,可以用于支持电子设备与其他设备的通信。
其中,处理模块可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processing,DSP)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、WiFi芯片等与其他电子设备交互的设备。
在一个实施例中,当处理模块为处理器,存储模块为存储器时,本实施例所涉及的电子设备可以为具有图3所示结构的设备。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储了计算机程序,当计算机程序被处理器执行时,使得处理器执行上述任一实施例的回收内存的方法。
本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的回收内存的方法。
本申请实施例还提供了一种芯片。请参阅图11,图11为本申请实施例提供的一种芯片的结构示意图。图11所示的芯片可以为通用处理器,也可以为专用处理器。该芯片包括处理器310。其中,处理器310用于执行上述任一实施例的回收内存的方法。
可选的,该芯片还包括收发器320,该收发器320用于接受处理器的控制,用于支持通信装置执行前述所示的技术方案。
可选的,图11所示的芯片还可以包括:存储介质330。
需要说明的是,图11所示的芯片可以使用下述电路或者器件来实现:一个或多个现场可编程门阵列(field programmable gate array,FPGA)、可编程逻辑器件(programmable logic device,PLD)、控制器、状态机、门逻辑、分立硬件部件、任何其他适合的电路、或者能够执行本申请通篇所描述的各种功能的电路的任意组合。
其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (11)
1.一种回收内存的方法,其特征在于,包括:
当回收到的内存量小于或等于预设回收量时,判定内存回收失败,将第一优先级提升至第二优先级,所述第一优先级根据内存回收失败时被查杀的进程的优先级确定,所述第二优先级的级别高于所述第一优先级的级别;其中,被查杀的进程的优先级根据被查杀的进程的前后台切换频次确定;
根据所述第二优先级确定待查杀进程;
对所述待查杀进程进行查杀处理,以回收所述待查杀进程所占用的内存。
2.如权利要求1所述的方法,其特征在于,所述将第一优先级提升至第二优先级,包括:
获取预设回收周期内,内存回收失败时被查杀的各个进程的优先级;
将第一进程的优先级确定为所述第一优先级,所述第一进程的优先级的级别高于其他进程的优先级的级别;
将所述第一优先级提升为所述第二优先级。
3.如权利要求2所述的方法,其特征在于,所述将第一进程的优先级确定为所述第一优先级之后,所述方法还包括:
根据第一时刻的内存状态确定第三优先级,所述第三优先级为所述第一时刻的内存状态下应当查杀的进程的优先级,所述第一时刻晚于所述预设回收周期的结束时刻;
根据所述第一优先级和所述第三优先级,确定所述第二优先级。
4.如权利要求1所述的方法,其特征在于,所述根据所述第二优先级确定待查杀进程,包括:
当所述第二优先级对应的进程中包含前台进程时,获取所述前台进程占用的内存;
当所述前台进程占用的内存大于或等于预设内存阈值时,将所述前台进程确定为所述待查杀进程。
5.如权利要求1所述的方法,其特征在于,在所述将第一优先级提升至第二优先级之前,所述方法还包括:
在检测到第二时刻的内存状态满足第一条件时,确定第四优先级,所述第二时刻早于预设回收周期的起始时刻,所述第四优先级为所述第二时刻的内存状态下应当查杀的进程的优先级;
根据所述第四优先级确定进程列表;
若对所述进程列表中的进程进行查杀处理,回收到的内存量小于或等于预设回收量时,判定内存回收失败。
6.如权利要求5所述的方法,其特征在于,所述第一条件包括:当前的可用内存小于第一阈值,和/或,当前的可回收内存页小于第二阈值。
7.如权利要求5所述的方法,其特征在于,在所述确定第四优先级之前,所述方法还包括:
获取每个进程的运行状态;
根据每个进程的运行状态,确定每个进程对应的重要程度值;
根据每个进程对应的重要程度值,确定每个进程的优先级。
8.如权利要求7所述的方法,其特征在于,在所述根据每个进程对应的重要程度值,确定每个进程的优先级之后,所述方法还包括:
将处于同一优先级的进程划分至同一个进程分组;
根据划分后的多个进程分组确定多个进程列表。
9.一种电子设备,其特征在于,包括:一个或多个处理器;一个或多个存储器;所述存储器存储有一个或多个程序,当所述一个或者多个程序被所述处理器执行时,使得所述电子设备执行权利要求1至8中任一项所述的方法。
10.一种芯片,其特征在于,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的电子设备执行如权利要求1至8中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储了计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310146944.9A CN117130767B (zh) | 2023-02-08 | 2023-02-08 | 回收内存的方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310146944.9A CN117130767B (zh) | 2023-02-08 | 2023-02-08 | 回收内存的方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117130767A CN117130767A (zh) | 2023-11-28 |
CN117130767B true CN117130767B (zh) | 2024-08-16 |
Family
ID=88851471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310146944.9A Active CN117130767B (zh) | 2023-02-08 | 2023-02-08 | 回收内存的方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117130767B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112363841A (zh) * | 2020-11-27 | 2021-02-12 | Oppo(重庆)智能科技有限公司 | 应用进程的查杀方法、装置、电子设备及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1168710B1 (en) * | 2000-06-19 | 2005-11-23 | Broadcom Corporation | Method and device for frame forwarding in a switch fabric |
CN107766128B (zh) * | 2016-08-17 | 2021-01-29 | 华为技术有限公司 | 一种启动应用的方法及装置 |
CN107220076B (zh) * | 2016-09-27 | 2018-10-30 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN110018900B (zh) * | 2018-01-10 | 2023-01-24 | Oppo广东移动通信有限公司 | 内存处理方法和装置、电子设备、计算机可读存储介质 |
US11301296B2 (en) * | 2019-05-31 | 2022-04-12 | Apple Inc. | Memory management based on classification of a software process |
WO2021087814A1 (zh) * | 2019-11-06 | 2021-05-14 | 深圳市欢太科技有限公司 | 进程优先级控制方法、装置、电子设备及存储介质 |
CN111611020A (zh) * | 2020-04-14 | 2020-09-01 | 上海卓易科技股份有限公司 | 一种应用程序的应用进程查杀方法及设备 |
CN111831440B (zh) * | 2020-07-01 | 2024-10-01 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN115809139A (zh) * | 2021-06-16 | 2023-03-17 | 荣耀终端有限公司 | 内存管理的方法及电子设备 |
CN115686808A (zh) * | 2021-07-27 | 2023-02-03 | 北京小米移动软件有限公司 | 安卓系统的内存管理方法和系统、电子设备、存储介质 |
CN113778662B (zh) * | 2021-07-28 | 2022-12-06 | 荣耀终端有限公司 | 内存回收方法及装置 |
CN115509951A (zh) * | 2022-08-18 | 2022-12-23 | 广东明创软件科技有限公司 | 内存回收方法、装置、电子设备及存储介质 |
CN115292052B (zh) * | 2022-09-27 | 2023-08-08 | 荣耀终端有限公司 | 内存回收方法、电子设备及计算机可读存储介质 |
-
2023
- 2023-02-08 CN CN202310146944.9A patent/CN117130767B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112363841A (zh) * | 2020-11-27 | 2021-02-12 | Oppo(重庆)智能科技有限公司 | 应用进程的查杀方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117130767A (zh) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113434288B (zh) | 内存管理的方法及电子设备 | |
KR102148948B1 (ko) | 전자 장치의 멀티 태스킹 방법 및 그 전자 장치 | |
WO2018059076A1 (zh) | 一种内存回收方法及装置 | |
US12159154B2 (en) | Memory management method and apparatus | |
JP6870158B2 (ja) | メモリを処理するための方法および装置ならびに記憶媒体 | |
CN113645341B (zh) | 电源键误触检测方法及电子设备 | |
CN111274039B (zh) | 内存回收方法、装置、存储介质及电子设备 | |
CN114185494B (zh) | 内存匿名页的处理方法、电子设备及可读存储介质 | |
WO2019137252A1 (zh) | 内存处理方法、电子设备、计算机可读存储介质 | |
CN107015866B (zh) | 一种数据处理方法及装置 | |
CN115292199B (zh) | 一种显存泄露的处理方法及相关装置 | |
WO2019128542A1 (zh) | 应用处理方法、电子设备、计算机可读存储介质 | |
CN111381996B (zh) | 内存异常处理方法及装置 | |
CN110018905B (zh) | 信息处理方法、装置、计算机设备和计算机可读存储介质 | |
WO2023202429A1 (zh) | 垃圾回收的方法及电子设备 | |
CN117130767B (zh) | 回收内存的方法、电子设备及存储介质 | |
CN117130824B (zh) | 一种处理异常的方法、电子设备及存储介质 | |
CN118277120A (zh) | 一种管理系统服务的方法及相关装置 | |
WO2023185684A1 (zh) | 一种应用程序的进程查杀方法及电子设备 | |
CN116185247A (zh) | 分屏推荐方法及电子设备 | |
CN115934302A (zh) | 一种内存泄漏处理方法及电子设备 | |
CN115828227B (zh) | 识别广告弹窗的方法、电子设备及存储介质 | |
CN116661987B (zh) | 内存申请方法和电子设备 | |
CN116049113B (zh) | 文件系统的整理方法、电子设备及计算机可读存储介质 | |
CN110007968A (zh) | 信息处理方法、装置、计算机设备和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee after: Honor Terminal Co.,Ltd. Country or region after: China Address before: 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong Patentee before: Honor Device Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |