CN116933254A - 一种应用程序的进程查杀方法及电子设备 - Google Patents

一种应用程序的进程查杀方法及电子设备 Download PDF

Info

Publication number
CN116933254A
CN116933254A CN202210339419.4A CN202210339419A CN116933254A CN 116933254 A CN116933254 A CN 116933254A CN 202210339419 A CN202210339419 A CN 202210339419A CN 116933254 A CN116933254 A CN 116933254A
Authority
CN
China
Prior art keywords
memory
electronic device
occupied
type
component
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.)
Pending
Application number
CN202210339419.4A
Other languages
English (en)
Inventor
季柯丞
杨文飞
常演
王绪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210339419.4A priority Critical patent/CN116933254A/zh
Priority to PCT/CN2023/083751 priority patent/WO2023185684A1/zh
Publication of CN116933254A publication Critical patent/CN116933254A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)

Abstract

一种应用程序的进程查杀方法及电子设备,涉及操作系统领域,可以避免电子设备频繁地触发进程查杀行为,有利于提升电子设备运行的流畅度和稳定性,该方法包括:电子设备统计运行的各个进程占用的第一类内存和第二类内存,其中第一类内存包括文件页占用内存,核心库文件占用内存,缓存数据占用内存,以及用户态匿名页占用内存中一项或多项;第二类内存包括流媒体占用内存以及内核占用内存中一项或多项;当检测到电子设备的内存满足预设条件时,根据所述各个进程占用的所述第一类内存和所述第二类内存,从运行的进程中确定目标进程,查杀目标进程。

Description

一种应用程序的进程查杀方法及电子设备
技术领域
本申请涉及操作系统领域,尤其涉及一种应用程序的进程查杀方法及电子设备。
背景技术
当内存资源紧张时,电子设备可以采用进程查杀的方式来清理进程占用的内存。以交互式操作系统(例如Android系统)为例,电子设备通常会根据用户的使用习惯,清理不常用或短期内不会使用的进程占用的内存。然而,在实际的使用场景中,每次进程查杀后释放的内存在整机内存中占比并不高,那么电子设备需要频繁地触发进程查杀行为,易造成系统崩溃。
发明内容
本申请提供的一种应用程序的进程查杀方法及电子设备,可以避免电子设备频繁地触发进程查杀行为,有利于提升电子设备运行的流畅度和稳定性。
为了实现上述目的,本申请实施例提供了以下技术方案:
第一方面、提供一种应用程序的进程查杀方法,该方法包括:电子设备运行一个或多个应用APP;电子设备统计一个或多个APP启动的各个进程占用的第一类内存和第二类内存,其中第一类内存包括文件页占用内存,核心库文件占用内存,缓存数据占用内存,以及用户态匿名页占用内存中一项或多项;第二类内存包括流媒体占用内存以及内核占用内存中一项或多项;当检测到电子设备的内存满足预设条件时,电子设备根据各个进程占用的第一类内存和第二类内存,从一个或多个APP启动的进程中确定目标进程;电子设备查杀目标进程。
也就是说,在统计进程运行过程中占用的内存时,一并统计进程运行过程中占用的第一类内存和第二类内存,即统计第一类内存和第二类内存的总占用量。那么,电子设备在执行进程查杀时,会根据各个候选进程的第一类内存和第二类内存的总占用量来确定目标进程。并且,电子设备在杀死目标进程后,会回收这些目标进程占用的第一类内存和第二类内存。由于通过该方法回收的第一类内存和第二类内存在整机内存的占比较高,有利于使得电子设备的可用内存维持在一个较高的数值上,能够避免电子设备频繁地触发进程查杀行为,有利于提升电子设备运行的流畅度和稳定性。
在一种可能的实现方式中,电子设备的内存满足预设条件包括:电子设备的剩余内存量小于或等于第一阈值,电子设备中因内存分配不及时造成进程的阻塞时长大于或等于第二阈值,电子设备中第二类内存的总占用量大于或等于第三阈值中的任一项。
在一些实施例中,电子设备可以采用基于剩余内存量的水线触发机制来查杀进程。具体的,电子设备可以监测电子设备的剩余内存量,其中剩余内存是指可用内存,可以包括系统中空闲的内存,以及文件页、核心库文件和缓存数据占用的内存。当监测到剩余内存量小于或等于阈值1时,电子设备启动进程查杀流程。
在另一些实施例中,电子设备也可以采用基于压力阻塞信息(Pressure StallInformation,PSI)的触发机制来查杀进程。具体的,电子设备可以监测电子设备上各个进程运行时因内存分配不及时造成的阻塞时长,即进程等待分配内存的时长。当监测到进程的阻塞时长大于或等于阈值2时,启动进程查杀流程。
在又一些实施例中,电子设备还可以采用基于第二类内存占用量的水线触发机制来查杀进程。具体的,电子设备可以监测电子设备中第二类内存的总占用量。当监测到第二类内存的总占用量大于或等于阈值3时,电子设备启动进程查杀流程。
需要说明的是,该实施例提供了一种从监测第二类内存占用量的角度监测电子设备的内存占用情况的方法。在电子设备真实的使用过程中,第二类内存占用量通常较大,是造成电子设备内存紧张的主要原因之一,因此,从监测第二类内存占用量的角度确定启动进程查杀流程,能够更准确地监测电子设备的内存占用情况,更有利于从根本上解决电子设备因第二类内存占用量高造成内存压力大、系统运行缓慢等的问题。另外,由于本实施例实现了回收第二类内存的功能,有效地减少了第二类内存的占用量,有利于系统的可用内存长时间处于一个较高的阈值,保证系统运行稳定和流畅性。
在一种可能的实现方式中,第一进程占用的第一类内存和第二类内存包括第一进程所调用的第二进程占用的第一类内存和/或第二类内存,第一进程为一个或多个APP启动的进程中的任一个,且第二进程不被除第一进程之外的其他进程所调用。电子设备根据各个进程占用的第一类内存和第二类内存,从一个或多个APP启动的进程中确定目标进程,包括:电子设备确定第一进程为目标进程后,确定第二进程也为目标进程。
示例性的,电子设备运行的多个进程之间存在联动关联的场景中,电子设备还可以根据目标进程,以及电子设备维护的不同进程间的联动关系来确定目标进程调用的其他进程,并确定这些其他进程也为需要查杀的进程,即也为目标进程。可以理解的是,当目标进程(例如第一进程)被查杀后,如果目标进程调用的其他进程(如第二进程)仅被目标进程所调用,那么这些其他进程也可以被查杀,这些其他进程占用的内存也可以被回收。这样,有利于进一步提升内存的利用率,提升系统的运行速率。当然,如果目标进程调用的其他进程还被其他非目标进程调用,则这些其他进程不能被查杀,以保证其他非目标进程的正常运行。
在一种可能的实现方式中,在电子设备查杀目标进程之后,该方法还包括:电子设备确定目标进程关联的第一组件是否为关键组件;其中关键组件为包含关键信息的组件,关键信息包括目标进程运行时会影响系统运行稳定性或者影响到用户的使用体验的信息;若确定第一组件为关键组件,则电子设备保留第一组件的信息;若确定第一组件不为关键组件,则电子设备清理第一组件的信息。
考虑到在选择目标进程时,可能将一些优先级较高或系统级的进程确定为目标进程。为了保证系统运行的稳定性,或者保证用户的使用体验,在查杀目标进程的过程中,识别目标进程中的关键组件(即关键组件中的信息影响系统的稳定性或者影响用户的使用体验),并保留目标进程中的关键组件。后续在重新启动目标进程(或者重启目标进程对应的APP)时,可以直接利用保留的关键组件恢复目标进程,保证系统运行的稳定性或者保证用户的使用体验。
在一种可能的实现方式中,关键信息包括负一屏的信息,杂志锁屏的信息,息屏显示的信息,天气widget的信息,电子文档的阅读进度信息中一项或多项。
在一种可能的实现方式中,在电子设备查杀目标进程后,在电子设备保留第一组件的信息之后,该方法还包括:电子设备调用第一组件;当查询到电子设备保留有第一组件的信息后,电子设备启动第三进程;电子设备根据保留的第一组件的信息,建立第三进程和第一组件关联关系。
第二方面、提供一种电子设备,包括:处理器和存储器,所述存储器与所述处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述处理器从所述存储器中读取所述计算机指令,以使得电子设备执行如上述方面及其中任一种可能的实现方式中所述的方法。
第三方面、提供一种装置,该装置包含在电子设备中,该装置具有实现上述方面及可能的实现方式中任一方法中电子设备行为的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括至少一个与上述功能相对应的模块或单元。例如,检测模块或单元、统计模块或单元、确定模块或单元、以及查杀模块或单元等。
第四方面、提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如上述方面及其中任一种可能的实现方式中所述的方法。
第五方面、提供一种芯片系统,包括处理器,当处理器执行指令时,处理器执行如上述方面中及其中任一种可能的实现方式中所述的方法。
第六方面、提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如上述方面中及其中任一种可能的实现方式中所述的方法。
上述第二方面提供的电子设备、第三方面提供的装置、第四方面提供的计算机可读存储介质、第五方面提供的芯片系统、以及第六方面提供的计算机程序产品所能达到的技术效果,可以参考上述第一方面以及第一方面中可能的实现方式中有关技术效果的描述,这里不再赘述。
附图说明
图1为本申请实施例提供的一种电子设备的硬件结构示意图;
图2A为本申请实施例提供的一种电子设备的软件结构示意图;
图2B为本申请实施例提供的一种应用程序的进程占用内存的示意图;
图3为本申请实施例提供的一种应用程序的进程查杀方法的流程示意图;
图4为本申请实施例提供的一种进程关联关系的示意图;
图5为本申请实施例提供的一种进程内存占用量的统计方法的示意图;
图6为本申请实施例提供的另一种应用程序的进程查杀方法的流程示意图;
图7为本申请实施例提供的一种应用程序中关键组件的恢复方法的流程示意图;
图8为本申请实施例提供的一种芯片系统的结构示意图。
具体实施方式
在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的联动关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例提供一种应用程序(application,APP)的进程查杀方法,可应用于安装有一个或多个APP的电子设备。示例性的,本申请实施例中电子设备例如可以为手机、平板电脑、个人计算机(personal computer,PC)、个人数字助理(personal digitalassistant,PDA)、智能手表、上网本、可穿戴电子设备、增强现实技术(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、车载设备、智慧屏、智能汽车、智能音响、机器人等,本申请对该电子设备的具体形式不做特殊限制。
图1示出了电子设备100的结构示意图。
电子设备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可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/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通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。摄像头193用于捕获静态图像或视频。数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。例如,该电子设备100的软件系统可以是鸿蒙系统、Android系统等。本发明实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
图2A是本发明实施例的电子设备100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为五层,从上至下分别为应用程序层(简称应用层),应用程序框架层(简称框架层),安卓运行时(Android runtime)和系统库,硬件抽象层(Hardware Abstraction Layer,HAL)以及内核层。
(1)应用层
应用层可以包括一系列应用程序包。如图2A所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
(2)框架层
框架层为应用层的应用程序提供应用编程接口(application programminginterface,API)和编程框架。框架层包括一些预先定义的函数。
如图2A所示,框架层可以包括活动管理器,窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
其中,活动管理器,用于负责所有APP进程的启动,APP四大组件(如活动activity、服务service、广播接收者broadcast receiver、内容提供者content provider)的启动,APP之间及APP内部界面之间切换和各种组件的生命周期。窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
在本申请的一些实施例中,框架层还包括组件清理模块。该组件清理模块用于按照一定策略清理组件。例如,采用最近最少使用(Least Recently Used,LRU)算法筛选最近不常使用的组件,并清理筛选出的组件。该组件清理模块还用于在接收到内核层查杀进程的信息后,清理被查杀进程所关联的组件。在另一些实施例中,该组件清理模块还用于判断被查杀进程所关联的组件是否为关键组件,以确定是否清理该组件。其中,关键组件是指包含关键信息的组件。其中关键信息包括目标进程运行时会影响系统运行稳定性,或者影响到用户的使用体验的信息。下文将对该实施例进行详细说明,这里先不展开说明。
3、Android Runtime和系统库
如图2A所示,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绘图的绘图引擎。
(4)HAL
HAL,用于将硬件抽象化。HAL隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。也就是说,上层所需使需要的有关硬件的操作都需要调用HAL相关的API,例如音视频接口、GPS接口、通话接口、Wi-Fi接口以及其他接口。
(5)内核层
内核层是硬件和软件之间的层。
内核层包括内核分配器、内存统计模块以及进程查杀模块。进一步的,内核层还包括进程/线程,音视频驱动、GPS驱动、Wi-Fi驱动等。
其中,内核分配器,可以为维护电子设备上各个进程的运行状态而分配内存。内存统计模块,用于统计各个进程申请的各类内存的情况。该内存统计模块用于统计电子设备中各个进程占用的各类内存的情况。其中,各个进程占用的各类内存可包括文件类占用内存、用户态匿名页占用内存、流媒体占用内存、以及内核占用内存等。
如图2B所示,上述文件类占用内存可包括文件页占用内存、核心库文件占用内存以及缓存数据占用内存。具体的,文件页可包括应用程序的代码文件以及应用运行时的资源文件(例如图标、图片)等。例如,应用程序的代码文件可以包括应用程序的配置文件(如:.dex文件)和类文件(如:.class文件)等。核心库文件可包括应用程序运行时需要访问的动态链接库(如.so文件,一种二进制文件)。缓存数据可包括电子设备中存储的用于缓存目的的文件属性的数据。一个具体的实现方式中,电子设备可使用图2A中应用层和框架层之间的mmap分配器(更具体的为文件页分配器)分配文件页占用内存以及缓存数据占用内存。电子设备可使用图2A中框架层与安卓运行时层之间的mmap分配器(更具体的为核心库文件分配器)分配核心库文件占用内存。在一些示例中,核心库文件分配器可以通过封装文件页分配器的方式实现,本申请实施例对核心库文件分配器的具体实现不做限定。
上述用户态匿名页占用内存,可包括应用程序运行过程中动态分配的内存,可包括调用框架层的API和编程框架产生的内存消耗。其中,调用的框架层的API和编程框架可包括:高层语言(例如Java语言,JavaScript语言,TypeScript语言)API、高层语言的系统组件以及系统语言(例如C++语言,C语言)的系统框架。一个具体的实现方式中,电子设备可使用可图2A中框架层和安卓运行时之间的mmap分配器(更具体的为匿名页分配器)为应用程序调用高层语言API、高层语言的系统组件分配所需占用的内存。电子设备可使用图2A中框架层和系统库之间的C++分配器为应用程序调用系统语言(例如C++语言,C语言)的系统框架分配所需占用的内存。
需要说明的是,在一些示例中,为了节省用户态匿名页数据在内存的占用,操作系统可以对使用频率不高的用户态匿名页数据进行压缩。需要说明的是,电子设备具体是由内核层触发压缩用户态匿名页数据的行为,并将压缩后的数据(也称为Zram压缩数据)存放在用于存放Zram压缩数据的内存空间中,由内核对Zram压缩数据进行统一管控。也就是说,一个具体的实现方式中,具体可由图2A中内核层的内核分配器分配用于存放Zram压缩数据的内存空间。
上述流媒体占用内存包括专用的流媒体内存分配器分配的内存。具体来说,多数应用程序(例如视频类应用、音乐类应用、游戏类应用、社交类应用等)具有流媒体播放能力。而这一类应用程序往往需要调用电子设备中SoC芯片中不同硬件的算力。而操作系统为保证不同硬件(如CPU、DSP、GPU、VPU)之间数据的高效共享,提供了专用的流媒体内存分配器(例如Android的ION内存分配器)。一个具体的实现方式中,电子设备可使用图2A中系统库与HAL之间的流媒体内存分配器为这些应用程序播放流媒体分配内存。需要注意的是,流媒体占用内存只能由申请者(即申请流媒体内存的应用程序)主动释放,内核无法对流媒体占用内存进行统一管控。
上述内核占用内存可包括:Vmalloc、Slab等内核运行所消耗的内存,用于页表转换(Page Table Entries,PTE)的内存,维护应用程序的进程信息的Kernel Stack、用于存放Zram压缩数据占用内存、以及用于实现多个进程间的高效通信的共享内存(例如Shmem)等。一个具体的实现方式中,电子设备可以使用图2A中内核层的内核分配器分配内核占用的内存。
总而言之,上述内存统计模块可以从mmap分配器、C++分配器、流媒体内存分配器以及内核分配器处获取各个进程占用的各类内存。需要说明的是,在其他一些实施例中,电子设备还可以包括多个子统计模块,例如在mmap分配器、C++分配器、流媒体内存分配器等位置分别设置有不同的子统计模块,用于统计各个分配器为进程分配的内存。而后子统计模块将统计数据汇总到内核层的内存统计模块(也称为总统计模块)处,由内核层的统计模块根据统计到的各个进程的各类内存进行分析,以确定查杀的目标进程。或者,在另一些实施例中,电子设备仅在例如mmap分配器、C++分配器、流媒体内存分配器、内核分配器等处设置子统计模块,不设置总统计模块。那么,子统计模块将各自统计的数据直接传递给进程查杀模块,由进程查杀模块根据统计到的各个进程的各类内存进行分析,以确定查杀的目标进程。本申请实施例对此不做具体限定。
如图2A所示,上述进程查杀模块,用于检测进程查杀流程的触发事件,以及根据上述内存统计模块检测到的各个进程占用的各类内存情况选择要查杀的进程(即目标进程),对选择的目标进程执行查杀等。
以下实施例中所涉及的技术方案均可以在具有上述硬件架构和软件架构的电子设备100中实现。
在一种技术方案中,电子设备可以采用基于剩余内存量的水线触发机制来查杀进程。具体的,电子设备可以监测电子设备的剩余内存量,当监测到剩余内存量小于或等于阈值1时,电子设备启动进程查杀流程。其中,剩余内存是指可用内存,可以包括系统中空闲的内存,以及文件类占用内存(包括文件页、核心库文件和缓存数据占用的内存)。需要说明的是,由于多数的文件页、核心库文件以及缓存数据在电子设备的存储器件中(如Flash器件)都有备份,在内存回收过程中,电子设备可以直接清理这部分数据占用的内存,并不需要先对这部分数据进行某些需要系统开销的操作(例如备份)后再清理这部分数据占用的内存。也就是说,这部分数据占用的内存属于低开销的可回收的内存。因此,这部分数据占用的内存属于可用内存。
在电子设备启动进程查杀流程后,电子设备可以采用进程的使用频率与进程占用的内存量相结合的方式确定查杀的目标进程。例如,当电子设备启动查杀流程后,电子设备先采用例如最近最少使用(Least Recently Used,LRU)算法筛选出使用频率不高的进程作为候选进程,然后根据各个候选进程的内存占用量,从中选择内存占用量较大的候选进程作为目标进程,而后查杀目标进程,以释放目标进程占用的内存。
需要说明的是,现有技术中,Linux内核中已提供多种工具用于获取各个进程的内存占用量。例如,电子设备可以采用top命令、ps命令以及其他命令等,或者采用其中任几个命令相结合的方法获取各个候选进程的内存占用量。需要说明的是,现有技术在获取各个进程的内存占用量时,仅统计了进程在用户态占用的内存(记为第一类内存),而并未统计进程在内核态占用的内存(记为第二类内存)。其中,第一类内存可以包括文件类占用内存和用户态匿名页占用内存。本申请实施例将现有技术中没有统计到的进程运行过程中占用的内存,记为第二类内存。第二类内存可以包括流媒体占用内存和内核占用内存。可以理解的,第一类内存可以是进程使用内存分配器(例如mmap分配器),或者通过框架层使用内存分配器(例如C++分配器)分配的内存。第二类内存可以是进程通过系统库使用专用的流媒体分配器,或者通过内核层的内核分配器分配的内存。
可以理解的是,由于现有技术中仅统计了进程运行过程中占用的第一类内存,那么当电子设备根据各个候选进程的第一类内存的占用量来确定目标进程时,电子设备选择第一类内存的占用量较大的候选进程为目标进程。那么,电子设备在杀死目标进程后,会回收该目标进程占用的第一类内存。可以理解的,在实际的使用场景中,进程占用的第一类内存在整机内存中的占比可能并不高,因此杀死基于第一类内存占用量确定的目标进程的收益较小,不利于使得电子设备的可用内存维持在一个较高的数值上,那么电子设备可能需要频繁地触发进程查杀行为,易造成系统崩溃。
为此,本申请实施例提供的一种方法,在统计进程运行过程中占用的内存时,一并统计进程运行过程中占用的第一类内存和第二类内存,即统计第一类内存和第二类内存的总占用量。那么,电子设备在执行进程查杀时,会根据各个候选进程的第一类内存和第二类内存的总占用量来确定目标进程。并且,电子设备在杀死目标进程后,会回收这些目标进程占用的第一类内存和第二类内存。由于通过该方法回收的第一类内存和第二类内存在整机内存的占比较高,有利于使得电子设备的可用内存维持在一个较高的数值上,能够避免电子设备频繁地触发进程查杀行为,有利于提升电子设备运行的流畅度和稳定性。
以下结合附图对本申请实施例提供的技术方案进行详细说明。
如图3所示,为本申请实施例提供的一种应用程序进程的查杀方法的流程示意图,该流程包括:
S301、电子设备运行一个或多个APP。
以电子设备运行APP1为例进行说明。电子设备运行APP1的过程中,APP1可以启动多个进程,例如前台进程和后台进程。其中,前台进程可以用于呈现APP1的用户界面,可以和用户进行交互。在一个示例中,APP1先启动前台进程,该前台进程可以拉起一个或多个后台进程,后台进程不需要和用户交互。该一个或多个后台进程可以包括APP1的后台服务进程,也可以包括电子设备的系统服务进程。再进一步地,这一个或多个后台进程还可以再次拉起其他的后台进程。总而言之,一个APP可能启动多个进程,这些进程在运行过程中会申请电子设备中相应的内存等系统资源。当然,一个APP也可能仅启动一个进程,或者在某些场景下该APP仅启动一个进程,在其他场景下启动多个进程。
S302、电子设备统计该一个或多个APP启动的各个进程占用的第一类内存和第二类内存。
在一些实施例中,电子设备可以在各个内存分配器处插桩,统计各个进程向各个内存分配器申请的各类的内存,包括第一类内存和第二类内存。其中,插桩,是指在保证各个内存分配器原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”,本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用),通过探针的执行采集各个进程通过各个内存分配器申请的分类内存。
这里以统计进程占用的第二类内存为例进行说明。前文已说明,进程占用的第二类内存可包括流媒体分配器(例如ION内存分配器)分配的内存和内核分配器分配的内存。其中,内核分配器分配的内存包括Vmalloc、Slab等内核运行的内存消耗,用于页表转换的PTE(Page Table Entries)内存,维护应用程序的进程信息的Kernel Stack、用于存放Zram压缩数据占用内存、以及用于实现多个进程间的高效通信的共享内存(例如Shmem)等。
在具体实现中,可以在流媒体分配器(例如ION内存分配器)的EGL Track接口处插桩实现监听,以统计流媒体分配器向进程分配的内存。可以在内核zsalloc内存分配接口处插桩实现监听,以统计Zram压缩数据占用内存。可以在内核Shmem内存分配接口处插桩实现监听,以统计进程申请的共享内存。内核中的其他分配器,如PTE,Kernel Stack,Slab,SlabLarge,Vmalloc等也提供了相应的内存统计接口,均可以在相应的统计接口处插桩实现监听,以统计进程申请的各类内存,这里不再一一赘述。
需要说明的是,部分进程可能需要与其他进程进行联动共同完成相关任务。例如,一个APP启动的进程(例如进程1)可能拉起另一个或多个进程(例如进程2)。这一个或多个进程中也可能申请内存,如第一类内存,和/或第二类内存)。在现有技术中,如果进程2申请了第一类内存,那么进程2申请的第一类内存可能被统计为进程2占用的内存,不会被统计到进程1占用的内存。那么,后续当确定进程1是目标进程,则查杀进程1时不会回收进程2占用的内存。可以理解的是,进程2这里申请的内存是为支持进程1的运行,如果进程1被查杀,进程2这里申请的内存也没有作用了,这样造成了内存的浪费。或者,如果进程2申请了第二类内存,那么现有技术不能统计到进程2申请的第二类内存,仍然会造成进程查杀后的收益不高的问题。
为此,在本申请的另一些实施例中,电子设备在统计各个进程的内存时,会根据进程之间的联动关系(也称为拉起关系、调用关系等),将各个进程申请的内存分配到源头进程上。这样,后续电子设备在选择查杀的目标进程时,可以准确地确定出占用系统的第一类内存和第二类内存总量最大的目标进程,并且在查杀目标进程时,能够回收更多的第一类内存和第二类内存,从而提升进程查杀的收益,提升系统的流畅度和稳定性。
在具体实现中,由于进程间的联动关系需要通过系统中进程间通信服务(例如粘合剂Binder,套接字Socket以及信号Signal),电子设备可以通过监听进程间通信服务,统计出各个进程的联动关系。在一些示例中,电子设备可以维护进程间的联动关系链表(如图4示出了一种进程间的联动关系链表的示例),来统计不同进程之间的联动关系。其中电子设备具体可以采用红黑树或哈希表等方式进行统计。然后,根据各个进程的联动关系,将各个进程申请的内存最终统计到源头进程。其中,源头进程是指第一个调用者。例如,进程1调用了进程2,进程2又调用了进程3。那么,进程2和进程3的源头进程均为进程1。
如图5所示,这里以APP1为例,对APP1的进程间的联动关系以及统计内存的方法进行示例性说明。运行APP1时,会启动APP1的主进程(例如前台进程)。APP1主进程可能会调用框架层,和/或系统库和运行时层的后台服务(每个服务都将对应一个进程),例如主进程调用音视频服务,音视频服务通过图形分配器(Graghic Allocator)申请流媒体的内存(例如ION内存)。那么,电子设备建立APP1的主进程(或者APP1)与音视频服务的联动关系,将音视频服务申请的内存统计到APP1的主进程(或者APP1)。类似地,当APP1主进程调用图像渲染服务,图像渲染服务通过图形分配器(Graghic Allocator)申请流媒体的内存(例如ION内存)。那么,电子设备建立APP1的主进程(或者APP1)与图像渲染服务的联动关系,将图像渲染服务申请的内存统计到APP1的主进程(或者APP1)。
在一些场景中,当系统的内存紧张时,APP1主进程也可能调用内核层的内存管理服务,压缩用户态匿名页数据,并申请用于存放压缩后的数据的内存(例如用于存放Zram压缩数据的内存)。那么,电子设备可以将内存管理服务本次申请的内存统计到APP1主进程(或APP1)。再类似的,APP1主进程也可能调用内核层的进程间通信(例如Binder)模块申请共享内存(例如Ashmem)。那么,电子设备将进程间通信模块本次申请的共享内存统计到APP1的主进程(或者APP1)。再类似的,APP1主进程调用内核层的内存业务模块申请其他内核内存(例如页表PT、Stack、Slab、Vmalloc)。那么,电子设备将内存业务模块本次申请的各种内核内存统计到APP1的主进程(或者APP1)。
需要说明的是,电子设备这里维护的不同进程间的联动关系,除了这里用于将各个被调用进程申请的内存统计到源头进程外,后续电子设备在执行进程查杀时除了查杀选定的目标进程外,还可以将与目标进程具有联动关系的进程一并查杀,以回收更多的内存,提升系统的运行效率,后文将进行详细说明。
S303、当检测到电子设备的内存满足预设条件时,电子设备从该一个或多个APP启动的进程中确定目标进程。
其中,电子设备的内存满足预设条件,即为电子设备执行进程查杀的触发条件。例如,电子设备的内存满足预设条件包括:电子设备的剩余内存量小于或等于阈值1;或者,电子设备中因内存分配不及时造成进程的阻塞时长大于或等于阈值2;或者,电子设备中第二类内存的总占用量大于或等于阈值3中的任一项。
在一些实施例中,电子设备可以采用基于剩余内存量的水线触发机制来查杀进程。具体的,电子设备可以监测电子设备的剩余内存量,其中剩余内存是指可用内存,可以包括系统中空闲的内存,以及文件页、核心库文件和缓存数据占用的内存。当监测到剩余内存量小于或等于阈值1时,电子设备启动进程查杀流程。
在电子设备启动进程查杀流程后,电子设备可以采用进程的使用频率与进程占用的内存量相结合的方式确定查杀的目标进程。例如,当电子设备启动查杀流程后,电子设备先采用例如LRU算法筛选出使用频率不高的进程作为候选进程,然后根据各个候选进程的内存占用量,从中选择内存占用量较大的候选进程作为目标进程,而后查杀目标进程,以释放目标进程占用的内存。
需要注意的是,各个候选进程的内存占用量包括第一类内存占用量和第二类内存占用量,也就是说,电子设备是基于各个候选进程占用的第一类内存和第二类内存的总占用量来确定目标进程的。
可选的,在电子设备运行的多个进程之间存在联动关联的场景中,这里各个候选进程的内存占用量还可以包括各个候选进程调用的其他进程申请的内存(也包括第一类内存和第二类内存)。进一步的,电子设备还可以根据目标进程,以及电子设备维护的不同进程间的联动关系来确定目标进程调用的其他进程,并确定这些其他进程也为需要查杀的进程,即也为目标进程。可以理解的是,当目标进程被查杀后,如果目标进程调用的其他进程仅被目标进程所调用,那么这些其他进程也可以被查杀,这些其他进程占用的内存也可以被回收。这样,有利于进一步提升内存的利用率,提升系统的运行速率。当然,如果目标进程调用的其他进程还被其他非目标进程调用,则这些其他进程不能被查杀,以保证其他非目标进程的正常运行。
例如,请继续参考图5,若确定APP1的主进程为目标进程后,除了查杀APP1的主进程回收APP1的主进程申请的内存外,若APP1调用的音视频服务以及图像渲染服务均没有被其他应用的进程调用,那么也可以确定音视频服务以及图像渲染服务也为目标进程。那么,电子设备也查杀音视频服务以及图像渲染服务,回收音视频服务以及图像渲染服务占用的流媒体内存(如ION内存)。可以理解的,通常流媒体内存的占用量较大。那么,查杀音视频服务以及图像渲染服务,将回收这部分流媒体内存,更有利于提高进程查杀的收益,维持系统运行的稳定性和流畅性。
在另一些实施例中,电子设备也可以采用基于压力阻塞信息(Pressure StallInformation,PSI)的触发机制来查杀进程。具体的,电子设备可以监测电子设备上各个进程运行时因内存分配不及时造成的阻塞时长,即进程等待分配内存的时长。当监测到进程的阻塞时长大于或等于阈值2时,启动进程查杀流程。需要说明的是,该实施例与上一个实施例的区别在于启动进程查杀流程的触发条件不同,电子设备具体执行进程查杀方法与上一个实施例相同,这里不再赘述。
在又一些实施例中,电子设备还可以采用基于第二类内存占用量的水线触发机制来查杀进程。具体的,电子设备可以监测电子设备中第二类内存的总占用量。当监测到第二类内存的总占用量大于或等于阈值3时,电子设备启动进程查杀流程。需要说明的是,该实施例与上述实施例的区别在于启动进程查杀流程的触发条件不同,电子设备具体执行进程查杀方法与上述实施例相同,这里不再赘述。
此外,该实施例提供了一种从监测第二类内存占用量的角度监测电子设备的内存占用情况的方法。在电子设备真实的使用过程中,第二类内存占用量通常较大,是造成电子设备内存紧张的主要原因之一,因此,从监测第二类内存占用量的角度确定启动进程查杀流程,能够更准确地监测电子设备的内存占用情况,更有利于从根本上解决电子设备因第二类内存占用量高造成内存压力大、系统运行缓慢等的问题。另外,由于本实施例实现了回收第二类内存的功能,有效地减少了第二类内存的占用量,有利于系统的可用内存长时间处于一个较高的阈值,保证系统运行稳定和流畅性。
还需要说明的是,上述各个实施例提供的方法在方案本身不矛盾的情况下可以组合使用,或者将上述实施例提供的方法与现有技术组合使用。例如,电子设备可以同时采用基于剩余内存量的水线触发机制和基于第二类内存占用量的水线触发机制。当监测到电子设备的剩余内存量小于或等于阈值1时,启动进程的查杀流程。这里的进程查杀方法可以采用现有技术,也可以采用本申请实施例提供的进程查杀方法。当监测到电子设备的第二类内存的占用量大于或等于阈值3时,也启动进程的查杀流程。可以理解的是,由于电子设备采用基于第二类内存占用量水线的触发机制,并且电子设备在执行进程的查杀流程时,回收了更多的第二类内存,有利于电子设备的剩余内存量长时间处于一个较高的阈值,那么也降低了电子设备采用基于电子设备剩余内存量水线的触发机制触发的进程查杀的频率,降低了因电子设备执行进程查杀流程所消耗的系统资源,如CPU资源,内存资源等。
S304、电子设备查杀目标进程。
电子设备针对确定好的目标进程进行查杀,回收目标进程占用的第一类内存和第二类内存。更具体的,电子设备的内核层查杀目标进程后,向上层通知已查杀目标进程,框架层在接收该通知信息后,进一步清理目标进程关联的组件,进一步释放组件所占用的内存。
综上,由于通过该方法回收的第一类内存和第二类内存在整机内存的占比较高,有利于使得电子设备的可用内存维持在一个较高的数值上,有利于提升电子设备运行的流畅度和稳定性。
另外,由于本申请实施例提供的进程查杀方法的收益更大,有利于使得电子设备的可用内存维持在一个较高的数值上,降低了电子设备执行进程查杀流程的频率,降低了因电子设备执行进程查杀流程所消耗的系统资源,如CPU资源,内存资源等。
在另外一些实施例中,考虑到上述方法在选择目标进程时,可能将一些优先级较高或系统级的进程确定为目标进程。为了保证系统运行的稳定性,或者保证用户的使用体验,在查杀目标进程的过程中,识别目标进程中的关键组件(即关键组件中的信息影响系统的稳定性或者影响用户的使用体验),并保留目标进程中的关键组件。后续在重新启动目标进程(或者重启目标进程对应的APP)时,可以直接利用保留的关键组件恢复目标进程,保证系统运行的稳定性或者保证用户的使用体验。
如图6所示,为本申请实施例提供的又一种应用程序的进程查杀方法的流程示意图,该流程包括:
S601、监测电子设备的第二类内存的占用量是否大于或等于阈值3。若监测到电子设备的第二类内存的占用量大于或等于阈值3,执行步骤S602。
可以理解的是,这里以电子设备的第二类内存的占用量大于或等于阈值3作为电子设备执行进程查杀的触发条件为例进行说明的,在其他一些实施例中,电子设备也可以采用其他的触发条件,这里不再一一赘述。
在一个具体的实现中,内核层(例如更具体的为内核层的内存统计模块)监测电子设备的第二类内存的占用量是否大于或等于阈值3。
S602、统计各个进程的内存占用量,各个进程的内存占用量包括第一类内存和第二类内存的总占用量。
可以理解的,在其他一些实施例中,电子设备也可以在执行步骤S601的同时或者执行步骤S601之前,就开始实时统计各个进程的内存占用量。在一个具体的实现中,内核层(例如更具体的为内核层的内存统计模块)用于统计各个进程的内存占用量。
本步骤的其他内容可以参考上述步骤S302中的相关内容,这里不再赘述。
S603、选择目标进程。
在一些实施例中,电子设备可以采用进程的使用频率与进程占用的内存量相结合的方式确定查杀的目标进程。具体选择目标进程的方法可以参考上述步骤S302中的相关内容,这里不再赘述。在一个具体的实现中,内核层(例如更具体的为内核层的内存统计模块)用于根据统计的各个进程的内存占用量,选择目标进程。
S604、查杀目标进程。
在一个具体的实现中,内核层(例如更具体的为内核层的进程查杀模块)用于查杀目标进程。
S605、判断目标进程关联的组件是否为关键组件。如果是关键组件,则执行步骤S606。如果不是关键组件,则执行步骤S607。
其中,关键组件是指包含关键信息的组件。其中关键信息包括目标进程运行时会影响系统运行稳定性,或者影响到用户的使用体验的信息。可以理解的是,目标进程运行时的一些临时数据会存储在组件中。如果在查杀目标进程后,将目标进程关联的组件直接清理,那么会丢失这部分临时数据。如果临时数据中包含关键信息,那么势必会影响再次启动目标进程,目标进程运行的稳定性或者影响用户的使用体验。例如,关键组件可以包括系统运行时一些常驻功能的信息,如电子设备负一屏的信息,杂志锁屏的信息,息屏显示的信息,天气widget的信息等。又例如,关键组件可以包括电子文档的阅读进度信息,而电子文档的阅读进度信息会影响到用户阅读电子文档时的使用体验。
因此,电子设备在清理目标进程关联的组件时,会首先判断目标进程关联的组件中是否包含关键组件。针对关键组件,保留关键组件的信息,或者保留关键组件中的关键信息,即执行步骤S606。针对非关键组件,清理非关联组件,即执行步骤S607。
在一个具体的实现中,内核层(例如更具体的为内核层的进程查杀模块)查杀目标进程后,向上层通知已查杀目标进程。框架层(例如更具体的为框架层的组件清理模块)判断目标进程关联的组件是否为关键组件,并进一步保留关键组件,清理非关键组件。
S606、保存关键组件的信息。
在清理目标进程关联的组件前,解耦关键组件与目标进程,修改关键组件的运行状态,以实现保存关键组件的信息。
在其他一些实施例中,电子设备还可以修改关键组件的生命周期,以实现保留关键组件的信息。
S607、清理非关键组件。
由此,实现保留目标进程关联的关键组件的信息,以便电子设备后续可以恢复关键组件的信息,维持系统运行的稳定性,以及提供用户的使用体验。
如图7所示,为本申请实施例提供的一种恢复目标进程的方法的流程示意图,该流程包括:
S701、调用组件。
示例性的,APP重新启动后,APP的主进程(或者其他进程,例如主进程调用的其他进程)可以调用框架层中的组件,以实现相应功能。或者,APP未退出,APP的主进程(或者其他进程,例如主进程调用的其他进程)需要再次调用框架层中的组件,以实现相应功能。
S702、判断调用的组件是否为可恢复的关键组件。如是,执行步骤S703,如否,执行步骤S706。
示例性的,APP的主进程(或者其他进程,例如主进程调用的其他进程)可以查询组件的记录,判断待调用的组件是否为可恢复的关键组件。即,电子设备是否保存有待调用的组件的信息。如果确定待调用的组件为可恢复的关键组件,则可以使用电子设备保留的关键组件的信息恢复该组件,即执行步骤S703-步骤S705。如果确定待调用的组件不是可恢复的关键组件,则采用系统原生流程,即执行步骤S706-步骤S709。
S703、创建进程。
由于组件的运行需要依托进程才能运行,因此电子设备创建一个新的进程,用于运行该组件。
S704、建立进程和组件的关联关系。
S705、运行组件。
本流程结束。
S706、判断是否需要创建组件。如否,执行步骤S707。如是,执行步骤S708,
示例性的,在调用之前查询电子设备是否运行有该组件。如果电子设备没有运行该组件,则需要创建该组件,即执行步骤S707。如果电子设备有运行该组件,则无需再次创建组件,即执行步骤S708。
S707、判断是否需要创建新进程。如是,执行步骤S703。
S708、创建组件。
S709、判断是否有现有进程可以承接创建的组件。如有,则执行步骤S704。如果没有,则执行步骤S703。
本申请实施例还提供一种芯片系统,如图8所示,该芯片系统包括至少一个处理器1101和至少一个接口电路1102。处理器1101和接口电路1102可通过线路互联。例如,接口电路1102可用于从其它装置(例如电子设备100的存储器)接收信号。又例如,接口电路1102可用于向其它装置(例如处理器1101)发送信号。示例性的,接口电路1102可读取存储器中存储的指令,并将该指令发送给处理器1101。当所述指令被处理器1101执行时,可使得电子设备执行上述实施例中的电子设备100(比如,手机)执行的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种装置,该装置包含在电子设备中,该装置具有实现上述实施例中任一方法中电子设备行为的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括至少一个与上述功能相对应的模块或单元。例如,检测模块或单元、统计模块或单元、确定模块或单元、以及查杀模块或单元等。
本申请实施例还提供一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如上述实施例中任一方法。
本申请实施例还提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如上述实施例中任一方法。
可以理解的是,上述电子设备等为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
本申请实施例可以根据上述方法示例对上述电子设备等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (11)

1.一种应用程序的进程查杀方法,其特征在于,所述方法包括:
电子设备运行一个或多个应用APP;
所述电子设备统计所述一个或多个APP启动的各个进程占用的第一类内存和第二类内存,其中所述第一类内存包括文件页占用内存,核心库文件占用内存,缓存数据占用内存,以及用户态匿名页占用内存中一项或多项;第二类内存包括流媒体占用内存以及内核占用内存中一项或多项;
当检测到所述电子设备的内存满足预设条件时,所述电子设备根据所述各个进程占用的所述第一类内存和所述第二类内存,从所述一个或多个APP启动的进程中确定目标进程;
所述电子设备查杀所述目标进程。
2.根据权利要求1所述的方法,其特征在于,
所述电子设备的内存满足预设条件包括:所述电子设备的剩余内存量小于或等于第一阈值,所述电子设备中因内存分配不及时造成进程的阻塞时长大于或等于第二阈值,所述电子设备中所述第二类内存的总占用量大于或等于第三阈值中的任一项。
3.根据权利要求1或2所述的方法,其特征在于,
第一进程占用的第一类内存和第二类内存包括所述第一进程所调用的第二进程占用的第一类内存和/或第二类内存;其中所述第一进程为所述一个或多个APP启动的进程中的任一个,且所述第二进程不被除所述第一进程之外的其他进程所调用。
4.根据权利要求3所述的方法,其特征在于,
所述电子设备根据所述各个进程占用的所述第一类内存和所述第二类内存,从所述一个或多个APP启动的进程中确定目标进程,包括:所述电子设备确定所述第一进程为所述目标进程后,确定所述第二进程也为所述目标进程。
5.根据权利要求1-4任一项所述的方法,其特征在于,在所述电子设备查杀所述目标进程之后,所述方法还包括:
所述电子设备确定所述目标进程关联的第一组件是否为关键组件;其中所述关键组件为包含关键信息的组件,所述关键信息包括所述目标进程运行时会影响系统运行稳定性或者影响到用户的使用体验的信息;
若确定所述第一组件为所述关键组件,则所述电子设备保留所述第一组件的信息;若确定所述第一组件不为所述关键组件,则所述电子设备清理所述第一组件的信息。
6.根据权利要求5所述的方法,其特征在于,所述关键信息包括负一屏的信息,杂志锁屏的信息,息屏显示的信息,天气widget的信息,电子文档的阅读进度信息中一项或多项。
7.根据权利要求5或6所述的方法,其特征在于,在所述电子设备查杀所述目标进程后,在所述电子设备保留所述第一组件的信息之后,所述方法还包括:
所述电子设备调用所述第一组件;
当查询到所述电子设备保留有所述第一组件的信息后,所述电子设备启动第三进程;
所述电子设备根据保留的所述第一组件的信息,建立所述第三进程和所述第一组件关联关系。
8.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器与所述处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述处理器从所述存储器中读取所述计算机指令,以使得所述电子设备执行如权利要求1-7中任一项所述的应用程序的进程查杀方法。
9.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-7中任一项所述的应用程序的进程查杀方法。
10.一种芯片系统,其特征在于,包括一个或多个处理器,当所述一个或多个处理器执行指令时,所述一个或多个处理器执行如权利要求1-7中任一项所述的应用程序的进程查杀方法。
11.一种计算机程序产品,其特征在于,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行如权利要求1-7中任一项所述的应用程序的进程查杀方法。
CN202210339419.4A 2022-04-01 2022-04-01 一种应用程序的进程查杀方法及电子设备 Pending CN116933254A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210339419.4A CN116933254A (zh) 2022-04-01 2022-04-01 一种应用程序的进程查杀方法及电子设备
PCT/CN2023/083751 WO2023185684A1 (zh) 2022-04-01 2023-03-24 一种应用程序的进程查杀方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210339419.4A CN116933254A (zh) 2022-04-01 2022-04-01 一种应用程序的进程查杀方法及电子设备

Publications (1)

Publication Number Publication Date
CN116933254A true CN116933254A (zh) 2023-10-24

Family

ID=88199335

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210339419.4A Pending CN116933254A (zh) 2022-04-01 2022-04-01 一种应用程序的进程查杀方法及电子设备

Country Status (2)

Country Link
CN (1) CN116933254A (zh)
WO (1) WO2023185684A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118034889A (zh) * 2024-03-08 2024-05-14 荣耀终端有限公司 插件进程映射方法及相关装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104866548A (zh) * 2015-05-08 2015-08-26 深圳市金立通信设备有限公司 一种内存管理方法
CN106293979B (zh) * 2015-06-25 2019-11-15 伊姆西公司 检测进程无响应的方法和装置
CN109857555B (zh) * 2019-01-15 2023-02-28 Oppo广东移动通信有限公司 内存回收方法及装置、存储介质和电子设备
CN111611020A (zh) * 2020-04-14 2020-09-01 上海卓易科技股份有限公司 一种应用程序的应用进程查杀方法及设备
CN111831441A (zh) * 2020-07-01 2020-10-27 Oppo广东移动通信有限公司 内存回收方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
WO2023185684A1 (zh) 2023-10-05

Similar Documents

Publication Publication Date Title
WO2021083378A1 (zh) 一种加速应用程序启动的方法及电子设备
US20240231890A1 (en) Memory management method and electronic device
WO2022257748A1 (zh) 虚拟内存管理方法和电子设备
CN111966492B (zh) 内存回收方法、装置、电子设备及计算机可读存储介质
CN113553130B (zh) 应用执行绘制操作的方法及电子设备
WO2023202429A1 (zh) 垃圾回收的方法及电子设备
CN114461589B (zh) 读取压缩文件的方法、文件系统及电子设备
CN115292199B (zh) 一种显存泄露的处理方法及相关装置
CN114356537A (zh) 内存管理方法、电子设备以及计算机可读存储介质
CN115757193A (zh) 一种内存的管理方法及电子设备
CN111381996B (zh) 内存异常处理方法及装置
CN115794361A (zh) 管理内存的方法和电子设备
WO2023185684A1 (zh) 一种应用程序的进程查杀方法及电子设备
CN116136826A (zh) 内存访问方法、芯片、电子设备及计算机可读存储介质
CN116126744B (zh) 一种内存回收方法、装置及终端设备
CN112783418A (zh) 一种存储应用程序数据的方法及移动终端
CN114253737B (zh) 电子设备及其内存回收方法、介质
CN115794413A (zh) 一种内存处理方法及相关装置
CN111459462B (zh) 分散式重锁降级
CN116719633B (zh) 管理内存交换分区的方法和电子设备
CN117130767B (zh) 回收内存的方法、电子设备及存储介质
CN118277120A (zh) 一种管理系统服务的方法及相关装置
CN116860429A (zh) 内存管理方法及电子设备
CN117707718A (zh) 进程管理的方法、电子设备及可读存储介质
CN117170856A (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