CN116126744A - 一种内存回收方法、装置及终端设备 - Google Patents
一种内存回收方法、装置及终端设备 Download PDFInfo
- Publication number
- CN116126744A CN116126744A CN202310350685.1A CN202310350685A CN116126744A CN 116126744 A CN116126744 A CN 116126744A CN 202310350685 A CN202310350685 A CN 202310350685A CN 116126744 A CN116126744 A CN 116126744A
- Authority
- CN
- China
- Prior art keywords
- memory
- application
- module
- pressure
- requirement
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种内存回收方法、装置及终端设备,涉及存储技术领域。该方法可以利用接收到操作和响应该操作之间的时间差预先进行内存回收,从而降低内存回收动作对应用的影响,提升应用运行的流畅度。该方法可以在监控到用于触发应用申请内存的第一事件时,判断内存剩余空间是否满足应用的内存需求,以及在内存剩余空间不满足应用的内存需求时,以目标内存回收方式根据内存缺口进行内存回收,其中,目标内存回收方式与内存缺口、CPU压力以及I/O压力对应。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种内存回收方法、装置及终端设备。
背景技术
随着技术的不断发展,各类应用对内存的需求呈增长的趋势。但终端设备的内存容量是有限的,无法满足大量应用长期占用内存资源。因此,当内存资源不足时,系统会进行内存回收。
现有技术中,内存回收策略主要是通过内核监控内存剩余空间,当内存剩余空间低于内存水线中的低(low)水位时则触发内存回收机制,例如根据最近最少使用(leastrecently used,LRU)链表进行内存页的回收等。但这种内存回收策略有时无法快速满足应用对内存的需求,会影响应用的响应速度。
发明内容
本申请实施例提供一种内存回收方法、装置及终端设备,用于预先回收内存以减少内存卡顿的现象。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,本申请提供一种内存回收方法,应用于终端设备,方法包括:监控到用于触发应用申请内存的第一事件时,判断内存剩余空间是否满足应用的内存需求。其中,第一事件例如为应用启动事件、游戏事件或者拍摄事件等。在内存剩余空间不满足应用的内存需求时,以目标内存回收方式根据内存缺口进行内存回收,其中,目标内存回收方式与内存缺口、CPU压力以及I/O压力对应。也就是说,本申请通过预先感知应用的预设事件,利用应用的预设事件和应用响应于该预设事件而执行相应操作之间的时间差进行内存回收,提前满足应用的内存需求,从而降低内存回收动作对应用(例如应用启动、拍摄、游戏)的影响,提升应用运行的流畅度。
在第一方面提供的一种所述实施方式中,方法还包括:根据内存缺口从预设的配置信息中查询得到压力等级,配置信息包括内存缺口与压力等级的对应关系,不同压力等级在不同等级的CPU压力下所采用的内存回收方式以及不同压力等级在不同等级的I/O压力下所采用的内存回收方式;根据压力等级、CPU压力及I/O压力从预设的配置信息中查询得到内存回收方式作为目标内存回收方式。这种方式确定的目标内存回收方式,能够平衡内存需求、CPU压力和I/O压力,避免由于内存回收导致CPU资源和I/O资源紧张。
在第一方面提供的一种所述实施方式中,内存缺口越大,对应的压力等级越高;压力等级越高,对应的内存回收方式的回收效率越高;CPU压力越大,对应的内存回收方式占用的CPU资源越少;以及,I/O压力越大,对应的内存回收方式占用的I/O资源越少。也就是说,在内存缺口大的情况下,采用回收效率越高的内存回收方式;在CPU压力大的情况下,采用少占用或不占用CPU资源的内存回收方式;在I/O压力大的情况下,采用少占用或不占用I/O资源的内存回收方式,以此实现对内存需求、CPU资源和I/O资源的平衡。
在第一方面提供的一种所述实施方式中,方法还包括:从应用内存需求信息中查找应用在第一事件作用下的内存需求,应用内存需求信息包括应用在不同事件作用下的内存需求;将应用在第一事件作用下的内存需求作为应用的内存需求。也就是说,不同应用在不同事件作用下的内存需求可以不同,这有利于更精准地确定内存缺口,减少回收的内存空间过量或不足的情况。
在第一方面提供的一种所述实施方式中,在以目标内存回收方式进行内存回收之后,方法还包括:记录应用的内存申请量,内存申请量为应用在第一事件的作用下实际申请的内存量;根据应用的内存申请量更新应用内存需求信息。这样可使得应用内存需求信息中存储的内存需求更加符合应用的实际内存需求,同样有利于更精准地确定内存缺口,减少回收的内存空间过量或不足的情况。
在第一方面提供的一种所述实施方式中,若内存剩余空间低于应用对应的内存水线,判断内存剩余空间不满足应用的内存需求,应用对应的内存水线为预设的低水位线与应用的内存需求的和。也就是说,在内存剩余空间低于预设的低水位线与应用的内存需求的和的情况下,终端设备需要提前进行内存回收。
在第一方面提供的一种所述实施方式中,内存缺口为内存剩余空间与应用对应的内存水线之间的差值。这样可使得内存回收后的内存空间,既能满足应用的内存需求,又高于预设的低水位线,可减少内核给应用分配内存后又由于内存剩余空间低于低水位线导致重新回收内存的情况。
在第一方面提供的一种所述实施方式中,目标内存方式包括以下内存回收方式中的一种或几种:压缩匿名页,将已压缩的匿名页存储至预设存储空间,优先查杀用户不常使用的进程,以及优先查杀低优先级的进程。
第二方面,本申请提供一种内存回收装置,内存回收装置包括场景识别模块、智能决策模块以及多个内存回收模块;场景识别模块用于监控应用是否接收到用于触发应用申请内存的第一事件;智能决策模块用于在场景识别模块监控到第一事件时,判断内存剩余空间是否满足应用的内存需求;智能决策模块还用于在内存剩余空间不满足应用的内存需求时,向目标内存回收模块发送内存回收通知,内存回收通知携带有内存缺口,目标内存回收模块与内存缺口、CPU压力以及I/O压力对应;目标内存回收模块用于基于内存缺口回收内存空间。
在第二方面提供的一种所述实施方式中,智能决策模块还用于:根据内存缺口从预设的配置信息中查询得到压力等级,配置信息包括内存缺口与压力等级的对应关系,不同压力等级在不同等级的CPU压力下所采用的内存回收方式以及不同压力等级在不同等级的I/O压力下所采用的内存回收方式;根据压力等级、CPU压力及I/O压力从预设的配置信息中查询得到内存回收方式作为目标内存回收方式。
在第二方面提供的一种所述实施方式中,内存缺口越大,对应的压力等级越高;压力等级越高,对应的内存回收方式的回收效率越高;CPU压力越大,对应的内存回收方式占用的CPU资源越少;以及,I/O压力越大,对应的内存回收方式占用的I/O资源越少。
在第二方面提供的一种所述实施方式中,智能决策模块还用于:从应用内存需求信息中查找应用在第一事件作用下的内存需求,应用内存需求信息包括应用在不同事件作用下的内存需求;将应用在第一事件作用下的内存需求作为应用的内存需求。
在第二方面提供的一种所述实施方式中,智能决策模块还用于:记录应用的内存申请量,内存申请量为应用在第一事件的作用下实际申请的内存量;根据应用的内存申请量更新应用内存需求信息。
在第二方面提供的一种所述实施方式中,智能决策模块还用于:若内存剩余空间低于应用对应的内存水线,判断内存剩余空间不满足应用的内存需求,应用对应的内存水线为预设的低水位线与应用的内存需求的和。
在第二方面提供的一种所述实施方式中,内存缺口为内存剩余空间与应用对应的内存水线之间的差值。
在第二方面提供的一种所述实施方式中,多个内存回收模块包括压缩模块、转储模块、文件页回收模块、应用查杀模块以及低内存终止守护进程,压缩模块用于压缩匿名页;转储模块用于将已压缩的匿名页存储至预设存储空间;文件页回收模块用户释放文件页;应用查杀模块用于优先查杀用户不常使用的进程;低内存终止守护进程用于优先查杀低优先级的进程。
第三方面,本申请提供一种终端设备,终端设备包括:存储器和一个或多个处理器;存储器与处理器耦合;其中,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令;当计算机指令被处理器执行时,使得终端设备执行第一方面中任一实施方式的方法。
第四方面,本申请提供一种计算机可读存储介质,包括计算机指令;当计算机指令在终端设备上运行时,使得终端设备执行如第一方面中任一实施方式的方法。
第五方面,本申请提供一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行如第一方面及其任一种可能的设计方式的方法。
第六方面,本申请提供一种芯片系统,该芯片系统包括一个或多个接口电路和一个或多个处理器。该接口电路和处理器通过线路互联。上述芯片系统可以应用于包括通信模块和存储器的终端设备。该接口电路用于从终端设备的存储器接收信号,并向处理器发送接收到的信号,该信号包括存储器中存储的计算机指令。当处理器执行该计算机指令时,终端设备可以执行如第一方面及其任一种可能的设计方式的方法。
其中,第二方面至第六方面中任一种设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
附图说明
图1为一种应用场景示意图;
图2为相关技术提供的一种内存回收策略的流程图;
图3为本申请实施例提供的一种终端设备的结构示意图;
图4为本申请实施例提供的一种终端设备的软件结构框图;
图5为本申请实施例提供的终端设备中各模块间的交互示意图;
图6为本申请实施例提供的一种内存回收方法的流程示意图一;
图7为本申请实施例提供的多种内存回收方法的回收效率对比示意图;
图8为本申请实施例提供的一种内存回收方法的流程示意图二;
图9为相关技术和本申请提供的内存回收方法在时序上的对比示意图;
图10为本申请实施例提供的一种内存回收装置的示意图;
图11为本申请实施例提供的一种芯片系统的结构示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请以下各实施例中,“至少一个”、“一个或多个”是指一个或两个以上(包含两个)。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。术语“连接”包括直接连接和间接连接,除非另外说明。“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
在本申请实施例中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
本申请提供的内存回收方法可用于对终端设备的内存回收场景中。其中,本申请实施例的终端设备:可以是无线终端或有线终端,无线终端可以是指向用户提供语音和/或其他业务数据连通性的设备,具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备。无线终端可以经无线接入网(radio access network,RAN)与一个或多个核心网进行通信,无线终端可以是移动终端,如移动电话(或称为“蜂窝”电话)和具有移动终端的计算机,例如,可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置,它们与无线接入网交换语言和/或数据。例如,个人通信业务(personal communicationservice,PCS)电话、无绳电话、会话发起协议(session initiation protocol,SIP)话机、无线本地环路(wireless local loop,WLL)站、个人数字助理(personal digitalassistant,PDA)等设备。无线终端也可以称为系统、订户单元(subscriber unit)、订户站(subscriber station),移动站(mobile station)、移动台(mobile)、远程站(remotestation)、远程终端(remote terminal)、接入终端(access terminal)、用户终端(userterminal)、用户代理(user agent)、用户设备(user device),在此不作限定。
在一些相关技术中,终端设备可设置内存水线,当监控到内存剩余空间低于内存水线中的低(low)水位时则触发内存回收机制,例如根据最近最少使用(least recentlyused,LRU)链表进行内存页的回收或进行数据压缩等。但在实际使用过程中,存在一些场景,例如应用启动的场景、拍照/录像的场景或者游戏应用的对战、对局等场景等,若仍然按照相关技术提供的内存回收策略进行内存回收,会出现由于内存回收不足无法满足应用需求,进而需要内核同步进行内存回收导致的应用卡顿的问题。
示例性的,以邮件应用的启动场景为例。如图1所示,终端设备可接收用户点击邮件应用的图标的操作,响应于该操作,终端设备启动邮件应用。其中,终端设备启动邮件应用的具体流程可如图2所示,响应于接收用户点击邮件应用的图标的操作,邮件应用被启动。具体的,桌面检测到用户点击邮件应用的图标的操作后可通过系统启动邮件应用(可以理解为拉起邮件应用的进程)。然后,邮件应用可向内核发送内存申请请求,该内存申请请求中携带有邮件应用所申请的内存空间。内核接收到内存申请请求后,可判断内存剩余空间是否小于邮件应用所申请的内存空间。在内存剩余空间小于邮件应用所申请的内存空间的情况下,内核进行内存回收,直至内存剩余空间大于或等于邮件应用所申请的内存空间。在内存剩余空间大于或等于邮件应用所申请的内存空间的情况下,内核可给邮件应用分配内存空间,以给邮件应用的启动提供内存空间,使邮件应用能够成功启动。
可以理解地,中央处理器(central processing unit,CPU)、输入/输出(input/out,I/O)以及内存(memory)等是终端设备的核心资源,任何一种资源紧张都可能会导致设备卡顿、性能下降的问题,其中,内存资源的供给又会影响到CPU资源和I/O资源。例如,在图1所示的场景下,邮件应用的启动带来大量的内存需求,但在内存剩余空间无法满足该大量的内存需求的情况下,内核需进行内存回收。在内存回收过程中,内核可对内存中内存页进行压缩以节省出一部分内存空间,但内存压缩本质上是通过消耗CPU资源来换取内存资源,存在计算资源开销,且内存压缩操作在压缩率上存在极限。又或者,内核可以对内存中的部分内存页执行交换(swap)操作,但在交换过程中需要消耗I/O资源。也就是说,内存供给过程中,需要消耗一定CPU资源及I/O资源,会影响应用的启动速度。另外,内存回收的速度也会影响应用的启动速度,内存回收的速度越慢,消耗CPU资源和/或I/O资源的时间越久,应用等待的时间则越长,即应用响应越慢。
也就是说,相关技术提供的内存回收方式,可能会使得内核在应用申请内存时同步进行内存回收,导致应用卡顿。
针对上述问题,本申请提供了一种内存回收方法,可以在应用发起内存申请前预先回收内存,使内存剩余空间足以满足应用的内存需求。如此,在应用真正发起内存申请时直接利用内存剩余空间快速满足应用的内存需求,既无需等待内存回收,又无需额外占用CPU资源和I/O资源,减少由于回收内存导致的应用卡顿的情况,提升应用运行的流畅度。
图3是本申请实施例提供的一种终端设备的结构示意图。如图3所示,该终端设备可以包括:处理器210,外部存储器接口220,存储器221,通用串行总线(universal serialbus,USB)接口230,充电管理模块240,电源管理模块241,电池242,天线1,天线2,移动通信模块250,无线通信模块260,音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,传感器模块280,按键290,马达291,指示器292,摄像头293,显示屏294,以及用户标识模块(subscriber identification module,SIM)卡接口295等。
其中,处理器210可以包括一个或多个处理单元,例如:处理器210可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器210可以是终端设备的神经中枢和指挥中心。处理器210可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器210中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器210中的存储器为高速缓冲存储器。该存储器可以保存处理器210刚用过或循环使用的指令或数据。如果处理器210需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器210的等待时间,因而提高了系统的效率。
在一些实施例中,处理器210可以包括一个或多个接口。接口可以包括集成电路(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)接口等。
外部存储器接口220可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端设备的存储能力。外部存储卡通过外部存储器接口220与处理器210通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
存储器221一般包括内部存储器221A和外部存储器221B。内部存储器221A即终端设备的内存,内部存储器221A可以为高速随机存取存储器(random-access memory,RAM)、只读存储器(read only memory,ROM)以及高速缓存(cache)等,支持随时读写而且读写速度快,用于暂时存放处理器210的运算数据,以及,与外部存储器221B交换的数据,作为处理器210与外部存储器221B之间进行沟通的桥梁。
外部存储器221B是采用非易失性存储介质的存储器,例如,至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
外部存储器221B可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像、视频播放功能等)等。存储数据区可存储终端设备使用过程中所创建的数据(比如音频数据,照片、视频等)等。
处理器210通过运行存储在外部存储器221B的指令,从而执行终端设备的各种功能应用以及数据处理。其中,内部存储器221A的读写速度高于外部存储器221B的读写速度,因此,处理器210运行存储在外部存储器221B的指令时,先将外部存储器221B中的指令加载至内部存储器221A中,这样,处理器210可以直接与内部存储器221A进行通信,提高了系统运行效率。
例如,外部存储器221B中包含了可实现本申请实施例提供的内存管理方法的计算机程序,从而使得处理器210读取到该计算机程序并运行该计算机程序时,该终端设备可具备本申请实施例提供的内存管理功能。
充电管理模块240用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。充电管理模块240为电池242充电的同时,还可以通过电源管理模块241为终端设备供电。
电源管理模块241用于连接电池242,充电管理模块240与处理器210。电源管理模块241接收电池242和/或充电管理模块240的输入,为处理器210,存储器221,外部存储器,显示屏294,摄像头293,和无线通信模块260等供电。在一些实施例中,电源管理模块241和充电管理模块240也可以设置于同一个器件中。
终端设备的无线通信功能可以通过天线1,天线2,移动通信模块250,无线通信模块260,调制解调处理器以及基带处理器等实现。在一些实施例中,终端设备的天线1和移动通信模块250耦合,天线2和无线通信模块260耦合,使得终端设备可以通过无线通信技术与网络以及其他设备通信。
天线1和天线2用于发射和接收电磁波信号。终端设备中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块250可以提供应用在终端设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块250可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块250可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。
移动通信模块250还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块250的至少部分功能模块可以被设置于处理器210中。在一些实施例中,移动通信模块250的至少部分功能模块可以与处理器210的至少部分模块被设置在同一个器件中。
无线通信模块260可以提供应用在终端设备上的包括WLAN(如(wirelessfidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigationsatellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(nearfield communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
无线通信模块260可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块260经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器210。无线通信模块260还可以从处理器210接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
终端设备可以通过音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
传感器模块280可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器和骨传导传感器等传感器。终端设备可通过传感器模块280采集各种数据。
终端设备通过GPU,显示屏294,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏294和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器210可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏294用于显示图像,视频等。该显示屏294包括显示面板。
终端设备可以通过ISP,摄像头293,视频编解码器,GPU,显示屏294以及应用处理器等实现拍摄功能。ISP用于处理摄像头293反馈的数据。摄像头293用于捕获静态图像或视频。在一些实施例中,终端设备可以包括1个或N个摄像头293,N为大于1的正整数。
按键290包括开机键,音量键等。按键290可以是机械按键。也可以是触摸式按键。马达291可以产生振动提示。马达291可以用于来电振动提示,也可以用于触摸振动反馈。指示器292可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口295用于连接SIM卡。SIM卡可以通过插入SIM卡接口295,或从SIM卡接口295拔出,实现和终端设备的接触和分离。终端设备可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口295可以支持Nano SIM卡,Micro SIM卡,SIM卡等。
可以理解的是,本实施例示意的结构并不构成对终端设备的具体限定。在另一些实施例中,终端设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
另外,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端设备的结构限定。在另一些实施例中,终端设备也可以包括比上述实施例提供的更多或者更少的模块,各个模块之间也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
另外,在上述部件之上,运行有操作系统。例如Android开源操作系统、Windows操作系统、IOS操作系统等,在此不做具体限制。在该操作系统上可以安装运行应用程序。
终端设备的操作系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以Android系统的分层架构为例,示例性说明终端设备的软件结构。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。
图4是本申请实施例的终端设备的软件结构框图,该软件结构包括应用程序层、应用程序框架层(framework),安卓运行时(android runtime)和系统库(native c/c++libraries),以及内核层(kernel)。
应用程序层可以包括一系列应用程序包。如图4所示,应用程序可以包括相机,游戏,社交,日历,通话等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。例如可以包括进程管理器、电话管理器、通知管理器、场景识别模块、智能决策模块以及应用查杀模块等,本申请实施例对此不做任何限制。
其中,进程管理器用于创建、中止进程和线程。
电话管理器用于提供终端设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,设备振动,指示灯闪烁等。
场景识别模块可用于监控各个应用程序与用户的交互情况,以确定是否存在触发应用申请内存空间的事件。例如,场景识别模块可监控是否存在用户触摸(touch down)应用的图标的事件。若场景识别模块监控到有用户触摸应用的图标的操作(简称为应用启动事件),可以确定当前场景为应用启动场景。在应用启动场景下,应用即将申请大量内存空间用于应用启动。又例如,场景识别模块监控还可以监控是否存在用户触摸相机应用的拍照/录像按钮的操作。若场景识别模块监控到存在用户触摸相机应用的拍照/录像按钮的事件(简称为拍摄事件)可以确定当前场景为相机场景。在相机型场景下,相机应用即将申请大量内存空间用于缓存采集的图像。又例如,场景识别模块在监控到用户点击游戏应用的开始游戏的操作等触发游戏应用切换至需要大量渲染的场景的事件(简称为游戏事件)时,可以确定当前场景为游戏场景。在游戏场景下,游戏应用即将申请大量内存空间用于存储渲染画面。需要说明的是,上述几个场景仅为举例,并不作为本申请的限制。
另外,场景识别模块还可以根据监控到的事件确定应用在对应事件作用下所需的内存空间。
智能决策模块可以获取内存缺口以及当前的系统资源使用信息,以及根据系统资源使用信息和内存缺口确定合适的内存回收方式。此外,智能决策模块还可以统计每个/类应用在不同事件下实际使用的内存空间。其中,关于智能决策模块确定内存回收方式的具体内容参见后文,在此暂不描述。
应用查杀模块用于根据所有处于运行状态的应用与用户的交互情况,确定对用户体验影响最小的应用(例如用户最不常使用的应用)为被查杀应用,以及关闭被查杀应用以实现内存空间的回收。例如终端设备当前运行有音乐应用、日历应用以及社交应用,其中社交应用处于前台运行,正在与用户交互;音乐应用后台运行且正在播放音乐;日历应用同样处于后台运行。因此在进行应用查杀时,应用查杀模块可将对用户体验影响较小的日历应用关闭,以实现内存空间的回收。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如,OpenGL ES),二维图形处理库(例如,SGL),低内存终止守护进程(low memory killer daemon,lmkd)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
OpenGL ES用于实现三维图形绘图,图像渲染,合成,和图层处理等。
SGL是2D绘图的绘图引擎。
lmkd可监控系统的内存剩余空间,通过终止与系统运行最不必要的进程来应对内存剩余空间不足的问题。在一种可选的实施方式中,每个进程设置有优先级,lmkd可以优先查杀优先级较低的进程。
安卓运行时(Android runtime)包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。
内核层包括系统层安全机制、内存管理、文件系统、网络堆栈及一系列驱动模块,是硬件和软件之间的层,提供与硬件的交互。在本申请实施例中,如图4所示,内核层包括压缩模块、转储模块、文件页回收模块等用于进行内存回收的模块,以及内存分配模块。
该内存分配模块用于在接收到应用的内存申请后,判断内存剩余空间是否满足应用的内存需求,以及在内存剩余空间满足应用的内存需求时给应用分配内存空间,以及在内存剩余空间不满足应用的内存需求的情况下通过压缩模块、转储模块等具备内存回收功能的模块进行回收内存。
该压缩模块可用于压缩内存中部分不活跃的匿名页以实现内存空间的回收。例如,该压缩模块可通过kswapd内核线程实现。通过压缩模块进行内存回收时,需要消耗CPU资源。
该转储模块可用于将已压缩的匿名页转储至预设空间(例如磁盘)中,以实现内存空间的回收。通过转储模块进行内存回收时,需要消耗I/O资源。其中转储模块的内存回收效率高于压缩模块的内存回收效率。内存回收效率是指单位时间内回收的内存空间。
文件页回收模块用于释放文件页,以实现内存空间的回收,回收速度快。该文件页回收模块例如可以通过Kswapd实现。若需要再次使用被释放的文件页,需要通过I/O进行读取。释放文件页这种内存回收方式可能会导致应用的文件页被释放过多,而导致后续重新加载时产生更多I/O。同时,重新加载的过程速度较慢且不稳定。
下面对本申请实施例提供的内存回收方法所涉及的软件模块和模块间的交互进行说明。如图5所示,应用层中的应用可以与框架层的场景识别模块交互,场景识别模块可与同一层的智能决策模块交互,智能决策模块可与应用查杀模块、压缩模块、转储模块、文件页回收模块以及lmkd交互。
具体的,应用接收到用户操作后,场景识别模块可监控是否存在预设事件(例如应用启动事件、拍摄事件、游戏事件等)。在监控到预设事件时,场景识别模块可以通知智能决策模块。智能决策模块接收到通知后可确定应用的内存需求,以及根据内存缺口和系统资源使用信息来综合确定压力等级,并根据压力等级选择利用压缩模块、转储模块、文件页回收模块、应用查杀模块和lmkd中的一个或多个进行内存回收。此外,应用接收到用户操作后还可以向内存分配模块发送内存申请,由内存分配模块给应用分配内存空间,以供应用执行相应操作。
下面将结合附图说明本申请实施例提供的内存回收方法。
图6为本申请实施例提供的一种内存回收方法的流程示意图一,该内存回收方法可以由图3所示的终端设备执行。如图6所示,该内存回收方法包括:
S610,终端设备监控到用于触发应用申请内存的第一事件时,获取应用的内存需求。
其中,不同应用的第一事件可以不同。例如,第一事件可包括用户在应用未开启时触摸/点击应用图标以开启应用的操作(即启动事件),用户点击拍摄/录像按钮的操作(即拍摄事件),用户点击开始游戏按钮等触发游戏应用切换至需要大量渲染的界面(例如战斗界面)的操作(即游戏事件),或者用户点击播放视频的操作(即播放视频事件)等。
需要说明的是,上述列举的第一事件仅为示例,在实际应用中可根据需求进行具体设置,只要该第一事件可使应用向内核申请内存即可。
内存需求是指应用在第一事件的作用下所需要的内存空间。例如,第一事件为用户在应用未开启时触摸/点击应用图标以开启应用的操作,则该内存需求是指启动该应用所需的内存空间;又例如,第一事件为用户点击开始游戏按钮的操作,则该内存需求为游戏应用进入游戏画面所需的内存空间。
在本实施例中,终端设备可从应用内存需求信息中查找应用的内存需求。
在一种可选的实施方式中,应用内存需求信息包括应用、事件以及内存需求的映射关系,终端设备可根据监控到的第一事件以及第一事件所作用的应用从应用内存需求信息中查询得到对应的内存需求。可选的,该内存需求信息可以表格的形式存在。
示例性的,内存需求信息可以如表1所示:
表1
示例性的,若终端设备监控到相机应用的启动事件,终端设备将内存需求1作为该相机应用的内存需求。又例如,若终端设备监控到游戏应用的游戏事件,终端设备将内存需求5作为该游戏应用的内存需求。又例如,若终端设备监控到相机应用的拍摄事件,则终端设备将内存需求3作为该相机应用的内存需求。
可选的,该内存需求信息可以包括每个应用的应用标识以及每类事件的事件标识。例如,启动事件的事件标识为1,拍摄事件的事件标识为2,游戏事件的事件标识为3,播放视频事件的事件标识为4,社交应用的应用标识为01,相机应用的应用标识为02,游戏应用的应用标识为03,视频应用的应用标识为04。例如,若终端设备监控到应用标识为02的应用接收到事件标识为1的事件,即监控到相机应用的拍摄事件,则终端设备将内存需求5作为相机应用的内存需求。
在另一种可选的实施方式中,应用内存需求信息包括群组内应用、事件和内存需求的映射关系。终端设备可将应用所在群组的内存需求确定为该应用的内存需求。
示例性的,该应用内存需求信息可以如表2所示:
表2
示例性的,若终端设备监控到APP10的播放视频事件,从表2所示的应用内存需求信息可确定该APP10所属的应用群组为视频类应用,并将视频类应用在接收播放视频事件后的内存需求7作为该APP10的内存需求。
需要说明的是,表1、表2提供的应用内存需求信息仅为示例,应用内存需求信息还可包括比表1、表2更多的内容,在此不做具体限制。例如,在其他实施方式中,每个应用在不同事件下对应的内存需求可以相同,例如上述内存需求2和内存需求3可以相同,内存需求4和内存需求5可以相同。当然,每个应用在不同事件下对应的内存需求也可以不同。
其中,应用内存需求信息可以是终端设备预先存储的,也可以是在线获取的,在此不做具体限制。例如,技术人员可在终端设备中预先配置应用内存需求信息(可称为第一内存需求信息),在终端设备监控到第一事件时便可直接查询该第一应用内存需求信息以得到应用的内存需求。又例如,终端设备可以根据各应用的历史运行数据,确定各应用在不同事件作用下实际使用的内存空间(即内存申请量),以得到应用内存需求信息(可称为第二内存需求信息),如此可使终端设备获取的应用的内存需求更贴近该应用的实际申请量。
在一种可选的实施方式中,终端设备可优先从第二内存需求信息中查询应用的内存需求。若从第二内存需求信息中未查询到应用的内存需求,可进一步从第一内存需求信息中查询应用的内存需求。
S620,终端设备在内存剩余空间不满足应用的内存需求时,根据内存缺口以及系统资源使用信息确定目标内存回收方式。
具体的,终端设备可根据应用的内存需求确定该应用对应的内存水线。若内存剩余空间高于应用对应的内存水线,则终端设备判断内存剩余空间满足应用的内存需求,无需进行内存回收。若内存剩余空间低于应用对应的内存水线,则终端设备判断内存剩余空间不满足应用的内存需求,需要进行内存回收,并且终端设备可进一步确定内存回收方式。
在实施方式一中,应用对应的内存水线为该应用的内存需求。例如,内存需求为300M,则该应用对应的内存水线也为300M。如此,在内存剩余空间低于300M的情况下,终端设备判断内存剩余空间不满足应用的内存需求;在内存剩余空间大于或等于300M的情况下,终端设备判断内存剩余空间满足应用的内存需求。
在实施方式二中,应用对应的内存水线为系统的内存水线中的低水位线的基础上加上该应用的需求内存。其中,低水位线是指触发系统进行内存回收的水位线。具体的,当系统监控到内存剩余空间低于该低水位线时,触发内存回收机制。
例如,应用的内存需求为200M,系统的低水位线为300M,则该应用对应的内存水线为200+300=500M。如此,在内存剩余空间低于500M的情况下,终端设备判断内存剩余空间不满足应用的内存需求;在内存剩余空间大于或等于500M的情况下,终端设备判断内存剩余空间满足应用的内存需求。
可以理解地,实施方式二所提供的应用对应的内存水线预先考虑到现有技术中基于内存水线的内存回收机制,相对于实施方式一所提供的应用对应的内存水线,可避免内核给应用分配内存后再重新进行内存回收,减轻CPU以及I/O的压力。
示例性的,以应用的内存需求为220M,低水位线为300M,内存剩余空间为200M为例。在实施方式一中,应用对应的内存水线为220M,则由于内存剩余空间(即200M)低于该应用对应的内存水线(即220M),终端设备判断内存剩余空间不满足应用的内存需求,因此终端设备进行内存回收以使内存剩余空间达到220M。但在给应用分配其所需的内存空间(即220M)后,内存剩余空间为220-220=0M,此时由于内存剩余空间(即0M)低于低水位线(即300M),则终端设备仍然需要再进行一次内存回收。在实施方式二中,应用对应的内存水线为220+300=520M,则由于内存剩余空间(即300M)低于该应用对应的内存水线(即520M),终端设备判断内存剩余空间不满足应用的内存需求,因此终端设备进行内存回收以使内存剩余空间达到520M。此后给应用分配其所需的内存空间(即220M)后,内存剩余空间为520-220=300M,此时由于内存剩余空间(即300M)不低于低水位线(即300M),则终端设备无需再进行一次内存回收。
其中,内存缺口是指内存剩余空间低于应用对应的内存水线的情况下,内存剩余空间与应用对应的内存水线的差值。例如,应用的内存需求为150M,低水位线为300M,内存剩余空间为200M。则在实施方式一中,应用对应的内存水线为150M,由于内存剩余空间(即200M)大于应用对应的内存水线(即150M),即不存在内存缺口。在实施方式二中,应用对应的内存水线150+300=450M,则内存缺口为450-200=250M。
系统资源包括CPU资源以及I/O资源等。系统资源使用信息可包括CPU压力以及I/O压力。
在本实施例中,终端设备可提供多种内存回收方式,每种内存回收方式的回收效率不同,所消耗的资源不同,对于用户使用体验的影响也不同。如图7所示,多种内存回收方式至少包括:
(1)对匿名页进行压缩操作,例如利用压缩模块进行内存回收。具体的,压缩模块可以压缩内存中部分不活跃的匿名页,需要消耗较多CPU资源,且可回收的内存空间相对较少。当设备需要重新读取被压缩的内存页时,对其进行解压操作即可,这种方式耗费时间较小,对用户后续的使用体验影响较小。
(2)对匿名页进行转储操作,例如利用转储模块进行内存回收。转储模块用于将内存中不活跃的匿名页交换至磁盘中,以实现内存空间的回收,需要消耗较多I/O资源。当设备需要重新读取被换出的内存页时,需要重新从磁盘中读取该内存页对应的文件资源,这种获取资源的速度慢于设备解压速度,因而对用户使用体验的影响高于上述方式(1)对用户使用体验的影响。
(3)释放文件页,例如利用文件页回收模块进行内存回收。文件页回收模块可以释放内存中部分不活跃的文件页,回收速度快,但可能会导致应用的文件页被释放过多,而导致后续重新加载时产生更多I/O。同时,重新加载的过程速度较慢且不稳定,即可能对后续用户应用造成不良体验。
(4)查杀用户不常使用的应用,例如利用应用查杀模块进行内存回收。应用查杀模块用于根据所有处于运行状态的应用与用户的交互情况,确定用户未来最不可能使用的应用为被查杀应用,以及关闭被查杀应用以实现内存空间的回收,需要较少的CPU资源(低于压缩模块所消耗的CPU资源)。一旦用户需要重新使用该应用,设备需要冷启动该应用,启动过程比较耗时,影响用户体验。
(5)查杀低优先级的应用,例如利用lmkd进行内存回收。lmkd可通过终止系统运行最不必要的进程以实现内存空间的回收,需要较少的CPU资源(低于压缩模块所消耗的CPU资源)。这样会使一些非系统相关的应用被关闭,一旦用户需要重新使用该应用,设备需要冷启动该应用,启动过程比较耗时,影响用户体验。同时lmkd不考虑应用的使用情况,可能会将用户正在使用的应用关闭,对用户使用体验的影响较大。
如图7所示,上述五种内存回收方式的回收效率依次升高,对用户使用体验的影响依次升高。由此,本实施例根据内存缺口以及系统资源使用信息来确定目标内存回收方式,旨在平衡内存回收效率、内存回收对用户使用体验的影响以及系统资源压力。
在本实施例中,确定内存回收方式的原则为:在内存缺口较大的情况下,优先使用回收效率较高的内存回收方式;在CPU压力较大的情况下,减少或不使用占用CPU资源的内存回收方式,例如压缩匿名页的方式;以及,在I/O压力较大的情况下,减少或不使用消耗I/O资源的内存回收方式,例如匿名页转储和文件页回收。
在本申请实施例中,终端设备可以先根据内存缺口确定基础压力等级,然后在基础压力等级的基础上结合CPU压力和I/O确定目标内存回收方式。
在一种可选的实施方式中,终端设备中预先存储有配置信息,该配置信息包括内存缺口与压力等级的对应关系、不同压力等级在不同等级的CPU压力下所采用的内存回收方式以及不同压力等级在不同等级的I/O压力下所采用的内存回收方式。其中,内存缺口越高,则压力等级越高;压力等级越高,对应的内存回收方式的回收效率越高;CPU压力越大,对应的内存回收方式占用的CPU资源越少;以及,I/O压力越大,对应的内存回收方式占用的I/O资源越少。
终端设备可根据内存缺口在配置信息中查询得到压力等级,然后结合压力等级和CPU压力确定第一内存回收方式,结合压力等级和I/O压力确定第二内存回收方式,最终将第一内存回收方式和第二内存回收方式的交集确定为目标内存回收方式。
示例性的,该配置信息可以表3的形式存在。
表3
其中,A、B、C、D、E均为内存回收方式,其中A表示上述内存回收方式(1),即压缩匿名页;B表示上述内存回收方式(3),即回收文件页;C表示上述内存回收方式(2),即匿名页转储;D表示上述内存回收方式(4),即查杀用户不常使用的应用;E表示上述内存回收方式(5),即查杀低优先级的应用。
如表3所示,终端设备中预先设置有5个压力等级,5个压力等级按照压力从低到高的顺序分别为压力等级1、压力等级2、压力等级3、压力等级4以及压力等级5。此外,终端设备还给CPU压力和I/O压力预先设置有低、中、高三个等级。当然,在其他实施方式中,压力等级、CPU压力等级以及I/O压力等级还可以包括更多或更少的等级。
例如根据表3可知,在内存缺口为150M,CPU压力等级为中,I/O压力等级为高的情况下,由于内存缺口(即150M)在200~300之间,终端设备可确定压力等级为压力等级3。在压力等级为3且CPU压力等级为中的情况下,对应B(回收文件页)、D(查杀用户不常使用的应用)、E(查杀低优先级的应用)三种内存回收方式;在压力等级为3且I/O压力等级为高的情况下,对应A(压缩匿名页)、D(查杀用户不常使用的应用)、E(查杀低优先级的应用)三种内存回收方式。最终,终端设备取两者交集,可将查杀用户不常使用的应用、以及查杀低优先级的应用作为目标内存回收方式。
又例如,在内存缺口为300M以上时,终端设备可将D(查杀用户不常使用的应用)、E(查杀低优先级的应用)两种内存回收方式确定为目标内存回收方式。
S630,终端设备以目标内存回收方式基于内存缺口进行内存回收。
终端设备确定目标内存方式后,便以目标内存回收方式进行内存回收。其中,基于内存缺口进行内存回收可以理解为,以目标内存回收方式回收该内存缺口所指示的内存空间,以使内存剩余空间达到应用对应的内存水线。
需要说明的是,在终端设备完成内存回收后,可给应用分配内存,以使应用执行该第一事件对应的操作。
如此,在应用申请内存之前预先根据应用的内存需求进行内存回收,可以减少由于内存剩余空间无法满足应用的内存需求而进行同步内存回收导致的应用卡顿问题。同时,根据应用的内存需求进行内存回收,可使内存剩余空间刚好能够满足应用的内存需求,避免内存回收不足或者内存回收过量的情况发生。
下面以游戏场景为例,具体说明终端设备中模块间的交互。图8为本申请实施例提供的一种内存回收方法的流程示意图二,其具体示出了终端设备中模块间的交互。如图8所示,该内存回收方法包括:
S801,响应于接收到开始游戏的操作,游戏应用向场景识别模块发送交互通知。
其中,开始游戏的操作例如为用户点击“开始游戏”、“匹配”或者“快速开始”等用于启动游戏的按钮的操作,或者为其他可使得游戏申请大量内存的操作。
该交互通知可包括游戏应用的应用标识以及交互信息,该交互信息用于指示用户点击了游戏应用的“开始游戏”、“匹配”或者“快速开始”等用于启动游戏的按钮。
S802,场景识别模块向智能决策模块发送通知信息。
可以理解地,场景识别模块可根据交互通知确定游戏应用接收到第一事件(即用户点击开始游戏按钮等触发游戏应用切换至需要大量渲染的界面(例如战斗界面)的操作(即游戏事件))。
该通知信息可包括游戏应用的应用标识以及第一事件的事件标识。示例性的,以上述S610中所述的内存需求信息为例,假设通知信息指示应用标识为03,事件标识为3,则场景识别模块可确定游戏应用接收到游戏事件。
S803,智能决策模块获取游戏应用的内存需求。
智能决策模块可根据游戏应用的应用标识和第一事件的事件标识从应用内存需求信息中查询到游戏应用的内存需求。
示例性的,仍然以表1为例,若场景识别模块确定交互信息中指示的事件为游戏事件,则确定游戏应用接收到游戏事件,并确定游戏应用的内存需求为内存需求5。
S804,智能决策模块判断内存剩余空间是否满足游戏应用的内存需求。
若智能决策模块判断内存剩余空间不满足游戏应用的内存需求,则进一步执行S805;若智能决策模块判断内存剩余空间满足游戏应用的内存需求,则可执行S809。
其中,智能决策模块判断内存剩余空间是否满足游戏应用的内存需求的过程可参见S620部分的描述,在此不再赘述。
S805,智能决策模块根据内存缺口以及系统资源使用信息确定目标内存回收方式(例如为利用应用查杀模块进行内存回收)。
其中,智能决策模块根据内存缺口以及系统资源使用信息确定目标内存回收方式的过程可参见S620部分的描述,在此不再赘述。
其中,目标内存回收方式可以为利用压缩模块进行内存回收,利用转储模块进行内存回收,利用文件页回收模块进行内存回收,利用应用查杀模块进行内存回收以及利用lmkd进行内存回收中的一种或几种。下文以目标内存回收方式为利用应用查杀模块进行内存回收为例进行说明。
S806,智能决策模块向应用查杀模块发送内存回收通知。
该内存回收通知中携带有内存缺口。
需要说明的是,若目标内存回收方式为利用压缩模块进行内存回收,则在S806中智能决策模块向压缩模块发送内存回收通知。若目标内存回收方式为利用压缩模块和转储模块同时进行内存回收,则在S806中智能决策模块向压缩模块和转储模块分别发送内存回收通知,两个内存回收通知分别携带第一内存缺口和第二内存缺口,且第一内存缺口与第二内存缺口的总和为上述内存缺口。在一种可选的实施方式中,智能决策模块可将压缩模块可回收的最大内存空间作为该第一内存缺口,将内存缺口与该第一内存缺口的差值作为第二内存缺口。在另一种可选的实施方式中,智能决策模块可按照预设比例将内存缺口分为第一内存缺口与第二内存缺口。该预设比例为压缩模块回收的内存空间与转储模块回收的内存空间的比值。例如,内存缺口为300M,预设比例为1:2,则其中第一内存缺口为100M,第二内存缺口为200M。
若目标内存回收方式为利用lmkd进行内存回收,则在S806中智能决策模块向lmkd发送内存回收通知。若目标内存回收方式未利用文件页回收模块进行内存回收,则在S806中智能决策模块向文件页回收模块发送内存回收通知。
S807,应用查杀模块基于内存缺口回收内存空间。
具体的,应用查杀模块回收该内存缺口所指示的内存空间,以使内存剩余空间达到应用对应的内存水线。应用查杀模块可优先查杀用户不常使用的应用。此外,该应用查杀模块还支持配置白名单,属于白名单内的应用不会被应用查杀模块查杀。
例如,内存缺口为300M,则该应用查杀模块可关闭用户最近不常使用的应用,以回收大于或等于300M的内存空间,从而使内存剩余空间达到游戏应用对应的内存水线。
S808,应用查杀模块向智能决策模块发送内存回收完成的通知。
S809,智能决策模块向游戏应用发送内存充足的通知。
S810,游戏应用向内存分配模块发送内存申请。
该内存申请中携带有游戏应用的内存申请量。
S811,内存分配模块判断内存剩余空间是否大于或等于游戏应用的内存申请量。
其中,若内存剩余空间大于或等于游戏应用的内存申请量,则执行S812;若内存剩余空间小于游戏应用的内存申请量,则该内存分配模块可利用压缩模块、转储模块、应用查杀模块和lmkd中的一个或多个重新执行内存回收。
S812,内存分配模块按照内存申请量给游戏应用分配内存空间。
S813,内存分配模块向智能决策模块发送游戏应用的内存申请量。
S814,智能决策模块记录游戏应用的内存申请量。
如此,智能决策模块可根据游戏应用的内存申请量来更新内存需求信息,以使内存需求信息中的内存需求接近游戏应用接收到游戏事件时对内存的实际消耗,如此可使S804的判断结果更加准确,减少内核在接收到应用的内存申请后同步进行内存回收的概率,减少应用卡顿的可能性。
可选的,在一种可选的实施方式中,本申请实施例提供的内存回收方法也可以不包括S809。也即智能决策模块无需向游戏应用发送内存充足的通知。相应地,S810可以替换为,游戏应用在接收到开始游戏操作的预设时间后向内存分配模块发送内存申请。也即,终端设备通过利用接收开始游戏操作的时刻到向内存分配模块发送内存申请的时刻的时间差预先进行内存回收,避免内存回收与游戏应用的线程同步运行造成的应用卡顿问题。
对比图2和图8可得到相关技术和本申请提供的内存回收方法在时序上的对比示意图。如图9所示,在相关技术提供的内存回收方法中,应用感知到用户操作后,应用关键线程运行。但在内存剩余空间不足以满足应用的内存需求时,需要在应用关键线程运行期间进行内存回收,且在内存回收完成后应用关键线程才可被分配内存并继续运行,其中应用感知到用户操作到应用关键线程运行结束需要花费时间T1。在本申请提供的内存回收方法中,应用感知到用户操作后,在应用关键线程运行之前,即利用两者的时间差预先进行内存回收,如此应用关键线程可以无需等待内存回收直接运行,使得从应用感知到用户操作到应用关键线程运行结束仅花费时间T2,相对于相关技术提供的方法减少δ(T1-T2)。
可见,本申请通过预先感知应用的预设事件,利用应用的预设事件和应用响应于该预设时间而执行相应操作之间的时间差进行内存回收,提前满足应用的内存需求,从而降低内存回收动作对应用(例如应用启动、拍摄、游戏)的影响,提升应用运行的流畅度。
本申请实施例还提供了一种内存回收装置,如图10所示,该内存回收装置包括场景识别模块、智能决策模块以及多个内存回收模块。其中,场景识别模块、智能决策模块以及多个内存回收模块可执行上述实施例提供的内存回收方法中的相应步骤,在此不再赘述。
例如,场景识别模块可用于监控是否存在应用启动事件、相机事件、游戏事件等预设事件。其中,该场景识别模块可在图4所示的应用程序框架层实现。
智能决策模块可用于获取预设事件的内存需求(即识别内存开销),根据内存缺口、CPU压力以及I/O压力确定内存回收方式(即判定内存回收方式),以及记录应用在预设事件的作用下实际申请的内存量(即内存归档)。其中,该智能决策模块可在图4所示的应用程序框架层实现。
多个内存回收模块可包括压缩模块、转储模块、文件页回收模块、应用查杀模块以及lmkd等,用于回收内存空间。其中,该多个内存回收模块可通过图4所示的应用程序框架层、内核层和系统库实现。
本申请实施例还提供了一种终端设备,该终端设备可以包括:存储器和一个或多个处理器。存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,终端设备可执行上述方法实施例中手机执行的各个功能或者步骤。
本申请实施例还提供一种芯片系统,如图11所示,该芯片系统1100包括至少一个处理器1101和至少一个接口电路1102。处理器1101和接口电路1102可通过线路互联。例如,接口电路1102可用于从其它装置(例如终端设备的存储器)接收信号。又例如,接口电路1102可用于向其它装置(例如处理器1101)发送信号。示例性的,接口电路1102可读取存储器中存储的指令,并将该指令发送给处理器1101。当所述指令被处理器1101执行时,可使得终端设备或者服务器执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在终端设备上运行时,使得终端设备执行上述方法实施例中的各个功能或者步骤。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在终端设备上运行时,使得终端设备执行上述方法实施例中的各个功能或者步骤。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述方法实施例中手机执行的各个功能或者步骤。
其中,本实施例提供的终端设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是,以上实施例仅用以说明本申请的技术方案而非限制,尽管参照较佳实施例对本申请进行了详细说明,本领域的普通技术人员应当理解,可以对本申请的技术方案进行修改或等同替换,而不脱离本申请技术方案的精神和范围。
Claims (18)
1.一种内存回收方法,其特征在于,应用于终端设备,所述方法包括:
监控到用于触发应用申请内存的第一事件时,判断内存剩余空间是否满足应用的内存需求;
在所述内存剩余空间不满足所述应用的内存需求时,以目标内存回收方式根据内存缺口进行内存回收,其中,所述目标内存回收方式与所述内存缺口、CPU压力以及I/O压力对应。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述内存缺口从预设的配置信息中查询得到压力等级,所述配置信息包括内存缺口与压力等级的对应关系,不同压力等级在不同等级的CPU压力下所采用的内存回收方式以及不同压力等级在不同等级的I/O压力下所采用的内存回收方式;
根据所述压力等级、所述CPU压力及所述I/O压力从所述预设的配置信息中查询得到内存回收方式作为所述目标内存回收方式。
3.根据权利要求2所述的方法,其特征在于,所述内存缺口越大,对应的压力等级越高;所述压力等级越高,对应的内存回收方式的回收效率越高;所述CPU压力越大,对应的内存回收方式占用的CPU资源越少;以及,所述I/O压力越大,对应的内存回收方式占用的I/O资源越少。
4.根据权利要求1-3中任意一项所述的方法,其特征在于,所述方法还包括:
从应用内存需求信息中查找所述应用在所述第一事件作用下的内存需求,所述应用内存需求信息包括应用在不同事件作用下的内存需求;
将所述应用在所述第一事件作用下的内存需求作为所述应用的内存需求。
5.根据权利要求4所述的方法,其特征在于,在以目标内存回收方式进行内存回收之后,所述方法还包括:
记录所述应用的内存申请量,所述内存申请量为所述应用在所述第一事件的作用下实际申请的内存量;
根据所述应用的内存申请量更新所述应用内存需求信息。
6.根据权利要求1-3中任意一项所述的方法,其特征在于,若所述内存剩余空间低于所述应用对应的内存水线,判断所述内存剩余空间不满足所述应用的内存需求,所述应用对应的内存水线为预设的低水位线与所述应用的内存需求的和。
7.根据权利要求6所述的方法,其特征在于,所述内存缺口为所述内存剩余空间与所述应用对应的内存水线之间的差值。
8.根据权利要求1-3中任意一项所述的方法,其特征在于,所述目标内存方式包括以下内存回收方式中的一种或几种:压缩匿名页,将已压缩的匿名页存储至预设存储空间,优先查杀用户不常使用的进程,以及优先查杀低优先级的进程。
9.一种内存回收装置,其特征在于,所述内存回收装置包括场景识别模块、智能决策模块以及多个内存回收模块;
所述场景识别模块用于监控应用是否接收到用于触发所述应用申请内存的第一事件;
所述智能决策模块用于在所述场景识别模块监控到所述第一事件时,判断内存剩余空间是否满足应用的内存需求;
所述智能决策模块还用于在所述内存剩余空间不满足所述应用的内存需求时,向目标内存回收模块发送内存回收通知,所述内存回收通知携带有内存缺口,所述目标内存回收模块与所述内存缺口、CPU压力以及I/O压力对应;
所述目标内存回收模块用于基于所述内存缺口回收内存空间。
10.根据权利要求9所述的装置,其特征在于,所述智能决策模块还用于:
根据所述内存缺口从预设的配置信息中查询得到压力等级,所述配置信息包括内存缺口与压力等级的对应关系,不同压力等级在不同等级的CPU压力下所采用的内存回收方式以及不同压力等级在不同等级的I/O压力下所采用的内存回收方式;
根据所述压力等级、所述CPU压力及所述I/O压力从所述预设的配置信息中查询得到内存回收方式作为所述目标内存回收方式。
11.根据权利要求10所述的装置,其特征在于,
所述内存缺口越大,对应的压力等级越高;所述压力等级越高,对应的内存回收方式的回收效率越高;所述CPU压力越大,对应的内存回收方式占用的CPU资源越少;以及,所述I/O压力越大,对应的内存回收方式占用的I/O资源越少。
12.根据权利要求9-11中任意一项所述的装置,其特征在于,所述智能决策模块还用于:
从应用内存需求信息中查找所述应用在所述第一事件作用下的内存需求,所述应用内存需求信息包括应用在不同事件作用下的内存需求;
将所述应用在所述第一事件作用下的内存需求作为所述应用的内存需求。
13.根据权利要求12所述的装置,其特征在于,所述智能决策模块还用于:
记录所述应用的内存申请量,所述内存申请量为所述应用在所述第一事件的作用下实际申请的内存量;
根据所述应用的内存申请量更新所述应用内存需求信息。
14.根据权利要求9-11中任意一项所述的装置,其特征在于,所述智能决策模块还用于:
若所述内存剩余空间低于所述应用对应的内存水线,判断所述内存剩余空间不满足所述应用的内存需求,所述应用对应的内存水线为预设的低水位线与所述应用的内存需求的和。
15.根据权利要求14所述的装置,其特征在于,所述内存缺口为所述内存剩余空间与所述应用对应的内存水线之间的差值。
16.根据权利要求9-11中任意一项所述的装置,其特征在于,所述多个内存回收模块包括压缩模块、转储模块、文件页回收模块、应用查杀模块以及低内存终止守护进程,
所述压缩模块用于压缩匿名页;
所述转储模块用于将已压缩的匿名页存储至预设存储空间;
所述文件页回收模块用户释放文件页;
所述应用查杀模块用于优先查杀用户不常使用的进程;
所述低内存终止守护进程用于优先查杀低优先级的进程。
17.一种终端设备,其特征在于,所述终端设备包括:存储器和一个或多个处理器;所述存储器与所述处理器耦合;
其中,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令;当所述计算机指令被所述处理器执行时,使得所述终端设备执行如权利要求1-8中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,包括计算机指令;
当所述计算机指令在终端设备上运行时,使得所述终端设备执行如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310350685.1A CN116126744B (zh) | 2023-04-04 | 2023-04-04 | 一种内存回收方法、装置及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310350685.1A CN116126744B (zh) | 2023-04-04 | 2023-04-04 | 一种内存回收方法、装置及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116126744A true CN116126744A (zh) | 2023-05-16 |
CN116126744B CN116126744B (zh) | 2023-08-22 |
Family
ID=86312046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310350685.1A Active CN116126744B (zh) | 2023-04-04 | 2023-04-04 | 一种内存回收方法、装置及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116126744B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349006A (zh) * | 2023-09-14 | 2024-01-05 | 荣耀终端有限公司 | Cpu资源管理方法及相关装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213539A (zh) * | 2016-09-27 | 2019-01-15 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN109857556A (zh) * | 2019-01-15 | 2019-06-07 | Oppo广东移动通信有限公司 | 内存回收方法及装置、存储介质和电子设备 |
CN110727606A (zh) * | 2019-09-27 | 2020-01-24 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置以及电子设备 |
CN111831441A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN111966492A (zh) * | 2020-08-05 | 2020-11-20 | Oppo广东移动通信有限公司 | 内存回收方法、装置、电子设备及计算机可读存储介质 |
CN114096953A (zh) * | 2019-10-17 | 2022-02-25 | 深圳市欢太科技有限公司 | 内存管理方法、装置、电子设备和计算机可读介质 |
US11287977B1 (en) * | 2021-03-29 | 2022-03-29 | Hitachi, Ltd. | Storage system and control method of storage system |
CN114443268A (zh) * | 2020-10-31 | 2022-05-06 | 华为终端有限公司 | 内存管理方法、装置、电子设备以及计算机可读存储介质 |
CN115509951A (zh) * | 2022-08-18 | 2022-12-23 | 广东明创软件科技有限公司 | 内存回收方法、装置、电子设备及存储介质 |
-
2023
- 2023-04-04 CN CN202310350685.1A patent/CN116126744B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213539A (zh) * | 2016-09-27 | 2019-01-15 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN109857556A (zh) * | 2019-01-15 | 2019-06-07 | Oppo广东移动通信有限公司 | 内存回收方法及装置、存储介质和电子设备 |
CN110727606A (zh) * | 2019-09-27 | 2020-01-24 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置以及电子设备 |
CN114096953A (zh) * | 2019-10-17 | 2022-02-25 | 深圳市欢太科技有限公司 | 内存管理方法、装置、电子设备和计算机可读介质 |
CN111831441A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN111966492A (zh) * | 2020-08-05 | 2020-11-20 | Oppo广东移动通信有限公司 | 内存回收方法、装置、电子设备及计算机可读存储介质 |
CN114443268A (zh) * | 2020-10-31 | 2022-05-06 | 华为终端有限公司 | 内存管理方法、装置、电子设备以及计算机可读存储介质 |
US11287977B1 (en) * | 2021-03-29 | 2022-03-29 | Hitachi, Ltd. | Storage system and control method of storage system |
CN115509951A (zh) * | 2022-08-18 | 2022-12-23 | 广东明创软件科技有限公司 | 内存回收方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
左泽: "进程级差异化动态内存管理", 中国优秀硕士学位论文全文数据库 信息科技辑, pages 137 - 22 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349006A (zh) * | 2023-09-14 | 2024-01-05 | 荣耀终端有限公司 | Cpu资源管理方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116126744B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113434288B (zh) | 内存管理的方法及电子设备 | |
WO2022083465A1 (zh) | 电子设备的投屏方法及其介质和电子设备 | |
CN115016706B (zh) | 一种线程的调度方法及电子设备 | |
CN116126744B (zh) | 一种内存回收方法、装置及终端设备 | |
WO2023202429A1 (zh) | 垃圾回收的方法及电子设备 | |
CN113641634B (zh) | 一种日志流量控制的方法以及电子设备 | |
CN115794361A (zh) | 管理内存的方法和电子设备 | |
CN114253737B (zh) | 电子设备及其内存回收方法、介质 | |
CN117632400A (zh) | 任务调度方法、电子设备及计算机可读存储介质 | |
CN112783418B (zh) | 一种存储应用程序数据的方法及移动终端 | |
CN114143405A (zh) | 数据流量管理方法及电子设备 | |
CN116719556B (zh) | 系统升级的方法和电子设备 | |
CN114916017B (zh) | 数据传输的方法、电子设备及可读存储介质 | |
CN116055443B (zh) | 识别社交场景的方法、电子设备及计算机可读存储介质 | |
CN116662150B (zh) | 应用启动耗时检测方法及相关装置 | |
CN116089320B (zh) | 垃圾回收方法和相关装置 | |
CN117133281B (zh) | 语音识别方法和电子设备 | |
WO2023185684A1 (zh) | 一种应用程序的进程查杀方法及电子设备 | |
CN116719633A (zh) | 管理内存交换分区的方法和电子设备 | |
CN116780683A (zh) | 供电控制方法及电子设备 | |
CN117632446A (zh) | 管理内存的方法和电子设备 | |
CN116954936A (zh) | 进程间通信方法和电子设备 | |
CN116737358A (zh) | 内存刷新方法和电子设备 | |
CN116137720A (zh) | 降低功耗的方法和电子设备 | |
CN117879981A (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 |