CN116700944A - 一种内存回收方法、装置及电子设备 - Google Patents

一种内存回收方法、装置及电子设备 Download PDF

Info

Publication number
CN116700944A
CN116700944A CN202211369110.6A CN202211369110A CN116700944A CN 116700944 A CN116700944 A CN 116700944A CN 202211369110 A CN202211369110 A CN 202211369110A CN 116700944 A CN116700944 A CN 116700944A
Authority
CN
China
Prior art keywords
application
memory
value
time point
preset
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
Application number
CN202211369110.6A
Other languages
English (en)
Other versions
CN116700944B (zh
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.)
Honor Device Co Ltd
Original Assignee
Honor Device 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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202211369110.6A priority Critical patent/CN116700944B/zh
Publication of CN116700944A publication Critical patent/CN116700944A/zh
Application granted granted Critical
Publication of CN116700944B publication Critical patent/CN116700944B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/5022Mechanisms to release resources
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供一种内存回收方法、装置及电子设备,该方法包括响应于第一应用的第一应用行为,确定第一应用是否为目标应用,其中,第一应用行为至少包括热启动、暖启动和/或切换应用界面,目标应用包括至少一个小程序应用;如果第一应用为目标应用,提高第一应用的内存水线值至第一预设值,内存水线值为第一应用触发内存空间回收的界限值。本申请实施例提供的方法可以对第一应用的启动过程进行优化,放开应用在热启动、暖启动以及切换用户界面时的内存回收水线值,避免因触发内存空间回收而抢占资源,缩短热启动、暖启动以及切换用户界面时的时间,提升运行流畅度,改善用户使用体验,满足用户对小程序应用的使用需求。

Description

一种内存回收方法、装置及电子设备
技术领域
本申请实施例涉及内存回收技术领域,尤其涉及一种内存回收方法、装置及电子设备。
背景技术
运行内存(running memory)是应用程序(application)运行时需要的内存,运行内存可以用于临时存储数据并与中央处理器(centralprocessing unit,CPU)进行数据交换。运行内存例如可以包括堆内存(heap),堆内存是一种可以动态分配大小的内存区域。应用程序可以在开始运行时申请和使用任意大小的运行内存,应用程序在运行过程中或者运行结束后,可以归还其占有的运行内存。
为了控制应用程序的内存占用率、改善内存空间的使用情况,可以为每一应用程序设置内存回收水线(watermark),如果应用程序占有的内存接近或超过其内存回收水线,则启动回收应用程序占有的部分内存。
一些应用程序在启动时,需要申请大量的内存,因此会频繁触发内存回收水线,导致内存空间回收的进程频繁启动,大量占用电子设备处理器对于前台运行的资源。进而导致这些应用程序启动时间增长,启动过程流畅度低,影响用户体验。
发明内容
本申请实施例提供了一种内存回收方法、装置及电子设备,以解决传统内存回收方法在应用运行过程中频繁执行的问题。
第一方面,本申请实施例提供一种内存回收方法,包括:响应于第一应用的第一应用行为,确定第一应用是否为目标应用,其中,第一应用行为至少包括热启动、暖启动和/或切换应用界面,目标应用包括至少一个小程序应用;如果第一应用为目标应用,提高第一应用的内存水线值至第一预设值,内存水线值为第一应用触发内存空间回收的界限值。
本申请实施例提供的内存方法,可以对第一应用的启动过程进行优化,放开应用在热启动、暖启动以及切换用户界面时的内存回收水线值,避免因触发内存空间回收而抢占资源,缩短热启动、暖启动以及切换用户界面时的时间,提升运行流畅度,满足用户对小程序应用的使用需求。
在一些可实现的方式中,响应于第一应用的第一应用行为,确定第一应用是否为目标应用的步骤包括:响应于第一应用的第一应用行为,从第一应用的配置文件中获取第一应用的应用标识号;判断预设目标应用列表中是否包括第一应用的应用标识号;预设目标应用列表中包括至少一个目标应用的应用标识号;如果预设应用列表中包括第一应用的应用标识号,则确定第一应用为目标应用。这样,本申请实施例选择优化的第一应用,与用户对第一应用的历史使用情况关联密切,符合用户对小程序应用的使用习惯,可以有效改善用户的使用体验。
在一些可实现的方式中,提高第一应用的内存水线值至第一预设值的步骤后,还包括:在内存水线值提高后的第一预设时间点,将第一应用的内存水线值由第一预设值降低至第二预设值。这样,第一应用的热启动、暖启动以及切换用户界面不会受到内存空间回收的影响,可以缩短第一应用热启动、暖启动以及切换用户界面时的时长,缩短用户等待时间。
在一些可实现的方式中,将第一应用的内存水线值由第一预设值降低至第二预设值的步骤后,还包括:在第一预设时间点和第二预设时间点之间,判断第一应用是否触发内存空间回收,第二预设时间点晚于第一预设时间点;如果第一应用未触发内存空间回收,在第二预设时间点将第一应用的内存水线值由第二预设值降低至第三预设值。在第二预设时间点再次降低内存水线值,可以加快第一应用触发内存空间回收,使其释放内存空间,提升电子设备的内存空间利用率。
在一些可实现的方式中,在第二预设时间点将第一应用的内存水线值由第二预设值降低至第三预设值的步骤后,还包括:确定第一时间点,其中,第一时间点是第二预设时间点与第三预设时间点之间的其中一个时间点,第三预设时间点晚于第二预设时间点;在第二预设时间点和第一时间点之间,判断第一应用是否触发内存空间回收;如果第一应用未触发内存空间回收,在第一时间点触发第一应用的内存空间回收。本申请实施例可以在第一时间点强制触发内存空间回收,避免第一应用长时间占用同一块内存空间,影响内存的利用率。
在一些可实现的方式中,判断第一应用是否触发内存空间回收的步骤包括:获取第一应用的第一变量值,其中,第一变量值包括初始值和过程值,在第一应用触发内存空间回收时,第一变量值由初始值变化为过程值;如果第一变量值等于初始值,则第一应用未触发内存空间回收;如果第一变量值不等于初始值,则第一应用已触发内存空间回收。
在一些可实现的方式中,第二预设值为第一预设值的四分之一。
在一种实现方式中,第三预设值为第一应用的内存水线值被提高之前的初始值。
在一些可实现的方式中,第一应用行为的触发条件包括用户点击第一应用的图标、点击第一应用的用户界面、扫描第一应用的二维码或者访问第一应用的链接中的至少一种。
第二方面,本申请实施例提供一种内存回收装置,包括:响应模块,用于响应于第一应用的第一应用行为,确定第一应用是否为目标应用,其中,第一应用行为至少包括热启动、暖启动和/或切换应用界面,目标应用包括至少一个小程序应用;内存回收模块,用于如果第一应用为目标应用,提高第一应用的内存水线值至第一预设值,内存水线值为第一应用触发内存空间回收的界限值。
第三方面,本申请实施例还提供一种电子设备,包括:处理器和存储器;存储器存储有程序指令,当程序指令被处理器执行时,使得电子设备执行前述第一方面及其各个实现方式中的方法。
第四方面,本申请实施例还提供一种芯片系统,包括:存储器和处理器;存储器存储有程序指令,当程序指令被处理器执行时,使得芯片系统执行前述第一方面及其各个实现方式中的方法。
第四方面,本申请实施例还提供一种计算机存储介质,计算机可读存储介质中存储有程序指令,当程序指令在计算机上运行时,使得计算机执行第一方面及其各个实现方式中的方法。
第五方面,本申请实施例还一种计算机程序产品,当其在计算机上运行时,使得计算机执行第一方面及其各个实现方式中的方法。
附图说明
图1为本申请实施例提供的小程序应用的用户界面示意图;
图2为小程序应用的运行环境示意图;
图3为内存回收水线与堆内存的关系示意图;
图4为小程序应用的启动过程示意图;
图5是本申请实施例提供的电子设备的硬件结构示意图;
图6是本申请实施例的电子设备100的软件结构框图;
图7为本申请实施例提供的内存回收方法的流程示意图;
图8为本申请实施例提供的用户点击切换应用界面的示意图;
图9为本申请实施例提供的提高内存水线值的示意图;
图10为本申请实施例提供的确定第一应用是否为目标应用的流程示意图;
图11为本申请实施例提供的预设目标应用列表的示意图;
图12为本申请实施例提供的降低内存水线值的流程示意图;
图13为本申请实施例提供的判断是否触发内存空间回收的流程示意图;
图14为本申请实施例提供的内存回收方法的线程图;
图15为本申请实施例提供的降低内存水线值的线程图;
图16为本申请实施例提供的一种内存回收装置的结构示意图。
具体实施方式
本申请说明书和权利要求书及附图说明中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作示例、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请,下面将结合附图对本申请的实施例进行详细描述。
为了便于技术人员理解本申请实施例的技术方案,下面先对本申请实施例涉及的技术术语进行解释说明。
1、堆内存(heap):在应用程序运行时动态分配的内存,应用程序可以申请任意大小的堆内存,堆内存一般用于存储数组或者对象。
2、垃圾回收(garbage collection,GC)机制:一种自动的存储器管理机制。当某个应用程序占用的一部分内存空间不再被这个程序访问时,垃圾回收机制会帮助这个应用程序释放这一部分内存空间。具体的,垃圾回收机制可以判断堆内存中哪些对象为垃圾,其中,垃圾指堆内存中不再被使用的对象,在确定垃圾后,垃圾回收机制可以将这些垃圾销毁,垃圾占用的内存空间也可以被回收。由于一些应用程序(例如Java、JavaScript应用程序)不会主动释放其占有的内存空间,因此需要依赖垃圾回收机制来管理堆内存空间。
3、前台运行:应用程序启动后,应用界面被展示给用户,此时应用程序处于前台运行状态。
4、后台运行:应用程序进入后台,并在后台维持运行状态,即后台运行。前台运行和后台运行可以灵活的切换。
下面首先结合附图对本申请实施例的应用场景进行示例性介绍。
依赖宿主应用程序运行的应用程序,是一种方便快捷的应用,可以被称为小程序(mini program)应用。宿主应用程序可以为其提供宿主环境,因此小程序应用无需下载及安装,只需借助宿主环境即可完成许多功能,可以提升用户的使用体验。由于这些应用可以是基于不同的宿主应用程序建立的,因此名称也可以不同,例如,在一些实现方式中,小程序应用还可以被称为频道等。宿主应用程序可以提供一种开发者工具,基于该开发者工具可以开发出多种多样的应用。图1中示例性示出了手机排号应用的用户界面示意图。
图2为小程序应用的运行环境示意图,如图2所示,小程序应用的运行环境分为渲染层和逻辑层,渲染层和逻辑层可以分别由两个线程管理,渲染层的界面可以使用WebView进行渲染,逻辑层采用JsCore线程运行JS脚本。一个小程序可以存在多个界面,因此渲染层可以存在多个WebView线程,渲染层和逻辑层的通信会经由宿主应用程序(图2中以native指代宿主应用程序)做中转,逻辑层发送的网络请求也可以经由宿主应用程序转发至第三方服务器。开发平台不同,小程序应用的运行环境也可能不同,此处不做赘述。
区别于常规应用程序,小程序应用可以提供一种新的连接用户与服务的方式,用户在使用时可以通过简单的操作即可打开这样的应用,例如使用宿主应用程序扫码或者搜索等。小程序应用在运行时可以占用更少的内存。此外,当用户需要使用某些电子设备中未安装的应用程序时,也可以在宿主应用程序中得到相应的服务。这样,可以缩短用户的使用时间成本和减少内存空间的占用。因此,在开发和应用小程序应用时,需要控制应用的启动时间、页面切换的流畅度等,以提升用户的使用体验。
运行内存是应用程序运行时需要的内存,运行内存可以用于临时存储数据并与中央处理器进行数据交换。运行内存例如可以包括堆内存,堆内存是一种可以动态分配大小的内存区域。应用程序可以在开始运行时申请和使用任意大小的运行内存,应用程序在运行过程中或者运行结束后,可以归还其占有的运行内存。
因此,为了控制应用程序的内存占用率、改善内存空间的使用情况,可以为每一应用程序均设置了内存回收水线,如果应用程序占有的内存接近或超过其内存回收水线,则启动回收应用程序占有的部分内存。
具体的,该内存回收方法可以是基于垃圾回收机制确定的。图3示例性的示出了内存回收水线与堆内存的关系,如图3所示,内存回收方法将应用程序可以占有的堆内存的最大值称为最大堆,用max size表示。将应用当前已使用的堆的大小用used size表示。将应用程序已占有的堆的大小与已使用的堆的大小的差值称为空闲堆,用free size表示。
内存回收水线与应用当前已使用的堆的大小、应用程序已占有的堆的大小与已使用的堆的大小之间差值的关系可以由下式表示。
water mark≈used size+free size;
当应用当前已使用的堆的大小接近内存回收水线时,就会触发内存空间回收的发生。
一些应用程序在启动时,需要申请大量的内存,因此会频繁触发内存回收水线,导致内存空间回收的进程频繁启动,大量占用电子设备处理器对于前台运行的资源。进而导致这些应用程序启动时间增长,启动过程流畅度低,影响用户体验。图4示例性的示出了小程序应用的启动过程。
为了解决上述技术问题,本申请实施例提供了一种内存回收方法,该方法可以确定第一应用为目标应用,在第一应用热启动、暖启动和/或切换应用界面时,放开第一应用的内存水线值,这样,可以推迟第一应用的内存回收进程的发生,使得第一应用的热启动、暖启动和/或切换应用界面的过程,不会受到内存回收进程的影响,可以缩短第一应用热启动、暖启动和/或切换应用界面时的时间,提高应用程序运行的流畅度,提升用户体验。该方法可以应用于电子设备,电子设备包括但不限于智能手机、平板电脑、个人电脑、工作站设备、大屏设备(例如:智慧屏、智能电视等)、可穿戴设备(例如:智能手环、智能手表)、掌上游戏机、家用游戏机、虚拟现实设备、增强现实设备、混合现实设备等、车载智能终端等。
图5是本申请实施例提供的电子设备的硬件结构示意图。如图5所示,电子设备100可以包括处理器110,存储器120,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,摄像头192,显示屏193,以及用户标识模块(subscriberidentification module,SIM)卡接口194等。其中,传感器模块180可以包括触摸传感器180A,陀螺仪传感器180B,气压传感器180C,地磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J等。其中,陀螺仪传感器180B,气压传感器180C,地磁传感器180D,加速度传感器180E等均可用于检测电子设备的运动状态,因此,也可以被称作运动传感器。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-networkprocessing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
存储器120可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。存储器120可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在存储器120的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,存储器120,显示屏193,摄像头192,和无线通信模块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等)输出声音信号,或通过显示屏193显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器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,显示屏193,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏193和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏193用于显示图像,视频等。显示屏193包括显示面板。显示面板可以采用液晶显示屏(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个显示屏193,N为大于1的正整数。
电子设备100可以通过ISP,摄像头192,视频编解码器,GPU,显示屏193以及应用处理器等实现拍摄功能。
ISP用于处理摄像头192反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头192中。
摄像头192用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,RYYB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头192,N为大于1的正整数。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
触摸传感器180A,也称“触控器件”。触摸传感器180A可以设置于显示屏193,由触摸传感器180A与显示屏193组成触摸屏,也称“触控屏”。触摸传感器180A用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏193提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180A也可以设置于电子设备100的表面,与显示屏193所处的位置不同。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
地磁传感器180D包括霍尔传感器。电子设备100可以利用地磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据地磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏193不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
SIM卡接口194用于连接SIM卡。SIM卡可以通过插入SIM卡接口194,或从SIM卡接口194拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口194可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口194可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口194也可以兼容不同类型的SIM卡。SIM卡接口194也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
图6是本申请实施例的电子设备100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Androidruntime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图6所示,应用程序包可以包括电池管理、相机,图库,日历,通话,地图,导航,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用程序接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图6所示,应用程序框架层可以包括窗口管理器,输入管理器InputManager,传感器管理器SensorManager,电话管理器,资源管理器,通知管理器等。
输入管理器可以用来监听用户的输入事件,例如用户手指在电子设备100的显示屏193执行的点击事件、滑动事件等。通过监听输入事件,电子设备100可以判断是否正在使用电子设备。
传感器管理器用于监听电子设备中的各个传感器返回的数据,例如运动传感器数据、接近光传感器数据、温度传感器数据等。利用各个传感器返回的数据,电子设备可以判断其是否有抖动,或者显示屏193是否被遮挡等。
AndroidRuntime包括核心库和虚拟机。Androidruntime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件组合实现。
下面对本申请实施例提供的内存回收方法的各方法步骤进行示例性说明。
图7为本申请实施例提供的内存回收方法的流程示意图,如图7所示,本申请实施例提供的内存回收方法包括以下步骤S201-S202:
S201:响应于第一应用的第一应用行为,确定第一应用是否为目标应用,其中,第一应用行为至少包括热启动、暖启动和/或切换应用界面,目标应用包括至少一个小程序应用。
其中,第一应用行为可以是由用户的触发引起的应用程序的一些行为。例如用户点击第一应用的图标或者用户界面、扫描第一应用的二维码或者访问第一应用的链接等,其中,第一应用的二维码可以是第一应用任意界面的二维码,扫描该二维码可以直接进入第一应用对应的用户界面。第一应用的链接可以是超链接(URL Link)或者短链接(ShortLink),通过点击该链接也可以直接进入第一应用的任意界面。或者,用户通过电子设备的任务管理栏找到第一应用的界面并点击、通过点击应用程序用户界面中的图标从一个应用程序跳转至另一个应用程序,也可以触发第一应用的第一应用行为。
本申请实施例中,第一应用行为至少包括热启动、暖启动、切换应用界面等。其中,热启动和暖启动是区别于冷启动的应用程序的启动方法。为了便于描述热启动和暖启动,首先对应用程序的冷启动进行示例性介绍。
冷启动是指启动应用程序时,电子设备后台没有该应用程序的进程,或者该应用程序的历史进程已经被销毁。因此在应用程序启动时,操作系统会重新创建一个新的进程分配给该应用程序,之后,应用程序的进程可以创建和初始化application对象、启动和初始化主进程activitythread、创建和初始化主活动mainactivity,完成测量、布局以及绘制等页面渲染的操作,最后显示应用程序的初始页面,完成应用程序的启动。
相较于冷启动,热启动是应用程序从后台运行切换至前台运行的过程,具体是指启动应用程序时,电子设备后台已有该应用程序的进程,该进程一般是应用程序上一次启动时创建和/或使用的进程,当用户触发应用程序启动后,应用程序会从已有的进程中启动应用程序,将应用程序的主进程、主活动等带回前台。在启动时,能够避免重复对象初始化、渲染以及绘制等操作,使得应用程序可以迅速的启动,减少等待时间。
相较于冷启动,温启动是应用程序从后台切换至前台运行的过程,具体是指使用宿主应用程序为应用提供的空进程进行启动,在启动时,可以直接在空进程中创建和初始化application对象、启动和初始化主进程activitythread、创建和初始化主活动mainactivity,完成测量、布局以及绘制等页面渲染的操作,最后显示应用程序的初始页面,完成应用程序的启动。因此应用程序温启动时无需创建进程,可以减少等待时间。
对于小程序应用,用户可以通过点击关闭按钮、或者按下电子设备的home键离开宿主应用程序等方式,将应用从前台运行切换至后台运行。此时小程序应用没有完全终止运行,当再次触发小程序应用启动时,小程序应用启动方式为热启动或者温启动。当应用切换至后台运行时,会维持一段时间的后台运行状态,超过一定时间后(例如5分钟)会被宿主应用程序主动销毁,或者,在段时间(例如5秒)发生连续两次及以上的内存告警,应用也会被销毁,以释放内存空间。
可以理解的是,小程序应用是否可以热启动及温启动,由其运行机制、宿主应用程序的状态以及电子设备的运行状态等多重因素决定。
对于小程序应用,切换应用界面是指由一个应用界面切换至另一个应用界面,例如切换至一个长界面等。图8中示例性的示出了通过用户点击切换应用界面的示意图。在一些实现方式中,切换用户界面也可以是通过扫码、链接跳转等方式到达应用除首屏外的其他界面。
在本申请实施例中,可以将需要优化启动时间以及页面切换流畅度的小程序应用,确定为目标应用,此处不对目标应用的种类及数量做具体限定。
本申请实施例中,响应于第一应用的第一应用行为,确定第一应用是否为目标应用,可以及时的基于应用行为对第一应用的实际运行状态进行调整。例如,调整小程序应用热启动、暖启动和/或页面切换时的运行状态,优化应用的运行过程,可以进一步改善在第一应用热启动、暖启动和/或页面切换时的用户体验。
S202:如果第一应用为目标应用,提高第一应用的内存水线值至第一预设值,内存水线值为第一应用触发内存空间回收的界限值。
由于第一应用的第一应用行为,例如热启动、暖启动以及切换用户界面等需要申请大量内存、多次申请内存以及使用大量的内存,但是,第一应用的内存水线值的初始值很低,在第一应用行为的进程执行的过程中,已使用的堆内存会较快速的接近或者超越内存回收水线,触发垃圾回收机制,导致内存空间回收的发生,使得内存空间回收的进程抢占电子设备的CPU资源,拖慢热启动、暖启动以及切换用户界面的运行过程。因此,本申请实施例可以响应第一应用的第一应用行为,提高第一应用的内存水线值。在提高内存水线值之后,第一应用申请及使用内存时,已使用的堆内存不会接近内存回收水线,因此可以避免内存空间回收的发生,电子设备的CPU资源可以优先由第一程序使用,能够缩短热启动、暖启动以及切换用户界面时的时间。
图9为本申请实施例提供的提高内存水线值的示意图,如图9所示,在将第一应用的内存水线值提高至第一预设值之后,第一应用已使用的堆内存used size已超越提高前的内存水线值,但与第一预设值之间还有一定距离,因此不会触发内存空间回收。
本申请实施例中,第一预设值可以是基于第一应用的历史运行状态预先确定的值,例如,第一预设值可以等于或者略大于第一应用运行阶段的最大占有内存,或者,第一预设值可以等于或者略小于第一应用历史申请的堆内存的最大值。示例性的,当第一应用运行阶段的最大占有内存为450MB时,可以将第一预设值设置为500MB。这样,不论第一应用热启动、暖启动还是切换用户界面,均不会触发内存空间回收,可以缩短用户的等待时间。
示例性的,第一应用的内存水线值在提高之前是一个较小的值,例如内存水线值等于200MB,但是第一应用在热启动、暖启动以及切换用户界面时,需要申请及使用较多的内存空间,例如需要使用400MB,因此,如果不将内存水线值由200MB放开至500MB,第一应用会触发内存空间回收,进而导致内存空间回收抢占CPU资源,拖慢第一应用的运行。而将内存水线值放开后,可以避免内存空间回收的发生。
由以上技术方案可知,本申请实施例提供一种内存回收方法,该方法可以对第一应用的启动过程进行优化,放开第一应用在热启动、暖启动以及切换用户界面时的内存回收水线值,避免因触发内存空间回收而抢占资源,可以缩短热启动、暖启动以及切换用户界面时的时间,提升运行流畅度,改善用户使用体验,满足用户对小程序应用的使用需求。
图10为本申请实施例提供的确定第一应用是否为目标应用的流程示意图,如图10所示,本申请实施例中步骤S201包括以下步骤S2011-S2013。
S2011:响应于第一应用的第一应用行为,从第一应用的配置文件中获取第一应用的应用标识号。
第一应用的配置文件可以是在第一应用的开发阶段形成的文件,该配置文件中包括第一应用的开发者信息以及第一应用的全局配置、页面配置、组件以及插件等。应用标识号可以是在应用开发阶段由开发平台提供的标识,一般用app_id表示,应用标识号可以用于区分不同的应用以及应用开发者。应用标识号的具体形式可以由第一应用的开发平台决定,例如可以包括一定长度的字符或者数字。示例性的,第一应用的应用标识号可以为2022101718230055或者8mq7v3zauz0等,本申请实施例对此不做具体限定。
S2012:判断预设目标应用列表中是否包括第一应用的应用标识号;预设目标应用列表中包括至少一个目标应用的应用标识号。
图11为本申请实施例提供的预设目标应用列表的示意图,其中示例性的示出了预设目标应用列表。
其中,预设目标应用列表可以是预先收集的app_id形成的列表。具体的形成步骤可以包括:确定需要优化热启动、暖启动以及切换用户应用界面的目标应用,且该目标应用为小程序应用,之后从每个目标应用的配置文件中获取各自的app_id,形成预设目标应用列表。预设目标应用列表中可以包括由同一开发平台开发且宿主应用程序相同的应用,也可以包括由不同开发平台开发和/或宿主应用程序不同的应用。
在一些实现方式中,预设目标应用列表可以从样本配置文件中获得。例如,获取多个用户在相同时间段内对小程序应用的使用数据,确定多个用户共同使用的应用,将多个用户共用使用的应用作为目标应用。之后通过这些应用的配置文件采集app_id,形成预设目标应用列表。
在另一些实现方式中,预设目标应用列表也可以从用户一定时间对应用的使用情况确定。例如,采集用户过去一段时间内的日志文件,从日志文件中获得用户访问小程序应用的使用频次,得到应用的频次排序。之后将使用频次大于或者等于预设阈值的小程序应用作为目标应用,通过这些应用的配置文件采集app_id,形成针对该用户的预设目标应用列表。
本申请实施例中,如果预设目标应用列表中包括第一应用的应用标识号,可以确定第一应用为目标应用,这样,本申请实施例可以对特定的应用进行热启动、暖启动以及切换用户界面时的过程进行优化。
在一些实现方式中,本申请实施例还可以提供多个预设目标应用列表,多个预设目标应用列表中可以包括由样本配置文件确定的第一预设目标应用列表,还可以包括由用户一定时间对应用的使用情况确定的第一预设目标应用列表。如果第一预设目标应用列表中包括第一应用的app_id,且第二预设应用列表中也包括第一应用的app_id,确定该第一应用为目标应用。本申请不对具体采用哪种方式确定第一应用是否为目标应用做具体限定。
这样,本申请实施例优化的第一应用,与用户对第一应用的历史使用情况关联密切,符合用户对小程序应用的使用习惯,可以有效改善用户的使用体验。
S2013:如果预设应用列表中包括第一应用的应用标识号,则确定第一应用为目标应用。
本申请实施例中,如果预设应用列表中包括第一应用的应用标识号,那么第一应用为目标应用,本申请的方案可以优化第一应用热启动、暖启动以及切换应用界面的过程。如果预设应用列表中不包括第一应用的应用标识号,那么不对第一应用热启动、暖启动以及切换用户界面的过程进行优化,可以在第一应用申请及使用大量内存空间时,及时进行内存空间回收,避免第一应用抢占内存空间以及CPU资源,进而应用其他应用的使用性能。
可以理解的是,第一应用是否为目标应用,与用户对小程序应用的使用情况相关。针对不同的用户预设目标应用列表可能不同,预设目标应用列表的不同将影响第一应用是否为目标应用的判断结果。
在一些实现方式中,本申请实施例还可以采用应用秘钥app_key或者app_id与app_key的结合作为确定第一应用是否为目标应用的标识,本申请对比不做具体限定。其中,app_key也可以从第一应用的配置文件中获取。
图12为本申请实施例提供的降低内存水线值的流程示意图,如图12所示,本申请实施例中步骤S202之后,还包括以下步骤S301。
S301:在内存水线值提高后的第一预设时间点,将第一应用的内存水线值由第一预设值降低至第二预设值。
在内存水线值提高后至第一预设时间点之间的时间段内,第一应用因热启动、暖启动以及切换应用界面等操作使用的内存空间大小,并不会接近或者超过内存水线值,这样,第一应用申请及使用内存空间的行为,并不会触发内存空间回收,第一应用可以使用大块的内存空间。这样,在这一时间段内,第一应用的热启动、暖启动以及切换用户界面不会受到内存空间回收的影响,可以缩短第一应用热启动、暖启动以及切换用户界面时的时长,缩短用户等待时间,改善用户使用体验。
进一步的,在内存水线值提高后至第一预设时间点之间的时间段内,第一应用的热启动、暖启动以及切换应用界面的进程可以结束运行,完成热启动、暖启动以及切换应用界面的过程,相应的用户界面可以被展示给用户。因此,可以在内存水线值提高后的第一预设时间点,将第一应用的内存水线值由第一预设值降低至第二预设值,以使第一应用已使用的内存大小接近或者超过新的内存水线值(第一预设值),以触发内存空间回收,避免第一应用长时间占用内存,影响其他应用程序的运行。
在一些实现方式中,内存空间回收的具体步骤可以由垃圾回收机制确定,例如,在第一应用已使用的内存大小接近或者超过新的内存水线值(第一预设值)之后,采用标记-清除算法、复制算法、标记-压缩算法或者分代收集算法等算法回收第一应用占有的内存空间,使得该部分内存空间可以继续被其他应用占有,这样,其他应用程序可以申请以及使用该部分内存空间,能够避免影响用户的使用体验。本申请实施例不对采用哪种内存回收的算法做具体限定。
本申请实施例中,第一预设时间点可以是在内存水线值提高后的第2秒,此时,内存水线值放开的时长为提高时到第一预设时间点之间的2秒。第一预设时间点还可以为其他时间点,例如内存水线值提高后的1.5秒或者3秒,本申请对此不做具体限定。
由于本申请实施例中为了避免第一应用热启动、暖启动以及切换用户界面时已使用内存接近内存水线值,将第一应用的内存水线值提高到了一个较大的值,因此,为了使能够第一应用顺利触发内存空间回收,归还其因热启动、暖启动以及切换用户界面而占有的内存空间,第二预设值可以是相对第一预设值较小的值。本申请实施例中,第二预设值可以等于第一预设值的四分之一。例如,第一预设值可以为500MB,那么第二预设值可以为125MB。第一预设值和第二预设值的具体数值可以由实际情况确定,本申请对此不做具体限定。
继续参见图12,本申请实施例步骤S301之后,还包括以下步骤S302-S303。
S302:在第一预设时间点和第二预设时间点之间,判断第一应用是否触发内存空间回收,第二预设时间点晚于第一预设时间点。
其中,可以在第一预设时间点和第二预设时间之间,周期性判断第一应用是否触发内存空间回收,周期可以为0.2秒、0.5秒或者1秒,本申请对周期的时长不做具体限定。这样,可以及时确定第一应用是否触发内存空间回收。在确定第一应用已经成功触发内存空间回收后,可以采用其他内存回收的方法控制第一应用的内存水线值,提高内存空间的利用率。
本申请实施例还可以在第二预设时间点时,判断第一应用是否触发内存空间回收。如果第一应用已经在第一预设时间点和第二预设时间点之间完成内存空间回收,那么,在第二预设时间点判断是否触发空间回收,可以避免判断过程影响空间内存回收的运行。另外,在第一预设时间点之后,第一应用可以继续申请和使用更多的内存空间,用于完成在第一应用行为后的新的应用行为,新的应用行为可能引起内存空间回收的发生,因此,在第二预设时间点判断是否触发内存空间回收,可以使得判断结果更为准确。
本申请实施例还可以在将第一应用的内存水线值由第一预设值降低至第二预设值之后,立即判断第一应用是否触发内存空间回收。这样,可以及时确定第一应用是否触发内存空间回收,以及确定第二预设值与第一应用已使用内存大小之间的关系。
可以在实际应用过程中基于使用需求最终确定判断方法,本申请对此不做具体限定。
本申请实施例中,内存水线值保持在第二预设值的时长为第二预设时间点与第一预设时间点之间的时间差值。例如,第一预设时间点是在内存水线值提高后的第2秒,第二预设时间点是在内存水线值提高后的第8秒,那么,内存水线值保持在第二预设值的时长为6秒。
这样,第一应用可以在第一预设时间点和第二预设时间点之间执行新的应用行为和/或触发内存空间回收,以便确定内存水线值为第二预设值时能否使第一应用触发内存空间回收。
S303:如果第一应用未触发内存空间回收,在第二预设时间点将第一应用的内存水线值由第二预设值降低至第三预设值。
由于在第一应用行为执行完成后,用户可能对第一应用触发新的应用行为,因此本申请实施例可以在内存水线值降低至第二预设值后,等待至第二预设时间点再次降低内存水线值,这样,可以避免内存水线值下降过快,使得第一应用迅速完成内存空间回收,导致第一应用执行新的应用行为时需要重复申请内存空间。
其中,第三预设值小于第二预设值,例如,第三预设值为第一应用的内存水线值提高之前的初始值,或者,第三预设值可以为第二预设值的二分之一,这样,可以在第二预设时间点之后加快内存空间回收的发生,避免第一应用占用内存过多影响电子设备的使用性能。
如果在内存水线值等于第一预设值时第一应用未触发内存空间回收,表示内存水线值仍然大于第一应用已使用的内存空间大小,因此在第二预设时间点再次降低内存水线值,可以加快第一应用触发内存空间回收,使其释放内存空间,提升电子设备的内存空间利用率。
可以理解的是,当采用在第二预设时间点判断第一应用是否触发内存空间回收的方案时,本申请实施例可以首先执行判断是否触发内存空间回收的步骤,之后再执行降低内存水线值的步骤。
继续参见图12,本申请实施例步骤S303之后,还包括以下步骤S304-S306。
S304:确定第一时间点,其中,第一时间点是第二预设时间点与第三预设时间点之间的其中一个时间点,第三预设时间点晚于第二预设时间点。
其中,第一时间点可以是第二预设时间点与第三预设时间点之间的随机值。例如,第二预设时间点可以是在内存水线值提高后的第8秒,第三预设时间点可以是在内存水线值提高后的第28秒,可以随机抽取8-28之间的任意值,作为第一时间点。
S305:在第二预设时间点和第一时间点之间,判断第一应用是否触发内存空间回收。
其中,可以在第二预设时间点和第一时间点之间,周期性判断第一应用是否触发内存空间回收,周期可以为0.2秒、0.5秒或者1秒,本申请对周期的时长不做具体限定。本申请实施例还可以在第二预设时间点或者第一时间点,判断第一应用是否触发内存空间回收。具体的判断时机可以由实际情况确定,本申请对此不做具体限定。
S306:如果第一应用未触发内存空间回收,在第一时间点触发第一应用的内存空间回收。
如果第一应用长时间未触发内存空间回收,表示此时的内存水线值与第一应用已使用的内存空间大小之间的差值较大,依赖内存水线值并不能使第一应用触发内存空间回收。因此,本申请实施例可以在第一时间点强制触发内存空间回收,避免第一应用长时间占用同一块内存空间,影响内存的利用率。
可以理解的是,当采用在第一时间点判断第一应用是否触发内存空间回收的方案时,本申请实施例可以首先执行判断是否触发内存空间回收的步骤,之后再执行强制触发内存空间回收的步骤。
参见图13,为本申请实施例提供的判断是否触发内存空间回收的流程示意图。如图13所示,本申请实施例中,步骤S302和步骤S305可以包括以下步骤S401-S404:
S401:获取第一应用的第一变量值,其中,第一变量值包括初始值和过程值,在第一应用触发内存空间回收时,第一变量值由初始值变化为过程值。
本申请实施例,第一变量值的初始值可以为0,过程值可以为大于0的数值。当第一应用第一次触发内存空间回收时,第一变量值可以由0增长为大于0的过程值。第一应用每触发一次内存空间回收,第一变量值可以逐渐增长为新的过程值。
需要说明的是,由于第一应用每触发一次内存空间回收,第一变量值均会随之发生变化。因此为了准确判断第一应用在降低内存水线值之后是否触发内存空间回收,在获取第一变量值时,应当获取生成时间为第一预设时间点之后的第一变量值。
在一些实现方式中,本申请实施例可以从第一应用的使用日志文件中获取第一变量值。
S402:判断第一变量值是否等于第二变量值。
S403:如果第一变量值等于初始值,则第一应用未触发内存空间回收。
本申请实施例可以基于第一变量值和初始值之间的关系,准确判断第一应用是否触发内存空间回收。其中,如果第一变量值等于初始值,那么第一应用在第一预设时间点后并未触发内存空间回收,第一变量值未发生变化。
S404:如果第一变量值不等于初始值,则第一应用已触发内存空间回收。
其中,如果第一标量值不等于初始值,那么第一应用在第一预设时间点后,可能触发了一次或多次内存空间回收,第一变量值发生了变化。
本申请实施例还可以包括判断第一应用行为是否为热启动以及是否为温启动的步骤。
在一种实现方式中,由于在第一应用热启动或温启动之前,需要进行冷启动。并且第一应用冷启动时,会产生表示其已启动的标识(第二变量值),因此本申请实施例可以从第一应用的使用日志文件中获取第二变量值,如果未获取到第二变量值,那么第一应用行为为冷启动,如果可以获取到第二变量值,那么第一应用行为为热启动或温启动。
在另一种实现方式中,由于第一应用温启动时,使用的进程为宿主应用程序为第一应用分配的进程,因此,在判断第一应用是否为温启动时,可以确定第一应用使用的进程为何种进程,如果第一应用需要创建新的进程才可以运行,那么第一应用为冷启动;如果第一应用使用已有进程运行,那么第一应用为热启动;如果第一应用应用宿主应用程序为其分配的进程运行,那么第一应用为温启动。
下面基于第一应用的运行线程以及结合附图对本申请的内存回收方法做进一步的说明。
图14为本申请实施例提供的内存回收方法的线程图,如图14所示,在电子设备执行内存回收方法的进程中,包括主线程(activitythread)、程序管理者(miniappmanager)、运行时刻(runtime)以及堆内存(heap)四个类或者对象,其中,activitythread和miniappmanager位于应用框架层(framework),runtime和heap位于第一应用的虚拟机层。在显示屏采集的用户触发指令传递至应用层、并分发给第一应用后,activitythread启动并运行activitystart()方法,第一应用开始第一应用行为(热启动、暖启动或者切换应用界面)的进程。之后,activitythread可以调用场景判断及传递场景信息的方法,具体的,activitythread可以向miniappmanager发送第一应用的app_id,miniappmanager在接收到app_id后,可以运行场景判断()的方法,确定第一应用是否为目标应用。如果第一应用为目标应用,miniappmanager可以运行传递场景信息()的方法,将场景信息发送至虚拟机层的runtime,其中,场景信息是用于表示第一应用为目标应用的标识。之后,runtime可以调用heap,运行放开内存水线()的方法,以推迟内存空间回收的发生。进一步的,runtime还可以调用heap,运行降低内存水线()的方法,以触发内存空间回收。
在一些实现方式中,在场景判断的方法以及传递场景信息的方法执行完毕后,可以返回方法调用的地址,继续运行主线程。
可以理解的是,除第一应用行为外的其他应用行为的线程,不能触发及调用本申请实施例中的场景判断()等方法。
图15为本申请实施例提供的降低内存水线值的线程图。如图15所示,在runtime调用heap调整内存水线值的线程中,heap可以使用任务管理器(taskprocessor)添加内存水线减小任务(图15中reducetargetfootprinttask1指代该任务),在2秒后执行reducetargetfootprinttask1,将内存水线值减小为第一预设值的四分之一,图15中targer_footprint=growth_limit_/4为该任务的代码表示,该任务中,可以通过减小内存水线的属性值(图15中的target_footprint值用于指代该属性值)来实现减小内存水线值。
进一步的,Heap可以使用taskprocessor可以继续添加内存水线减小任务(图15中reducetargetfootprinttask2指代该任务),在8秒后执行reducetargetfootprinttask2,reducetargetfootprinttask2可以首先判断第一应用是否触发内存空间回收,如果第一应用未触发内存空间回收,继续将内存水线值减小为第一应用的内存水线值被提高之前的初始值,图15中targer_footprint=initial_heap_size为该任务的代码表示。
进一步的,heap可以使用taskprocessor继续添加内存空间回收任务(图15中triggerpostforkccgctask指代该任务),执行triggerpostforkccgctask时,首先确定8-28秒之间的随机值,确定后判断第一应用是否触发内存空间回收,如果第一应用未触发内存空间回收,triggerpostforkccgctask可以强制触发首次内存空间回收。如果第一应用已触发内存空间回收,那么triggerpostforkccgctask不会触发内存空间回收。
需要补充说明的是,前述内容以第一预设时间点为2秒,第二预设时间点为8秒,第三预设时间点为28秒作为示例性介绍,不对第一预设时间点、第二预设时间点、第三预设时间点产生限定。前述内容以第二预设值等于第一预设值的四分之一、第三预设值为第一应用的内存水线值被提高之前的初始值作为示例性介绍,不对第二预设值以及第三预设值产生限定。
上述主要从电子设备的角度对本申请实施例提供的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请所公开的实施例描述的各示例的一种内存回收方法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是电子设备软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对上述电子设备进行功能模块或者功能单元的划分,例如,可以对应各个功能划分各个功能模块或者功能单元,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块或者功能单元的形式实现。其中,本申请实施例中对模块或者单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
本申请实施例还提供了一种用于实现手机等电子设备功能的软件装置,包括:响应模块,用于响应于第一应用的第一应用行为,确定第一应用是否为目标应用,其中,第一应用行为至少包括热启动、暖启动和/或切换应用界面,目标应用包括至少一个小程序应用。内存回收模块,用于如果第一应用为目标应用,提高第一应用的内存水线值至第一预设值,内存水线值为第一应用触发内存空间回收的界限值。
本申请实施例还提供了一种用于实现手机等电子设备功能的硬件装置。如图16所示,用于实现电子设备功能的内存回收装置可以包括:显示屏1001、存储器1002、处理器1003和通信模块1004。上述各器件可以通过一个或多个通信总线1005连接。显示屏1001可以包括显示面板10011和触摸传感器10012,其中,显示面板10011用于显示图像,触摸传感器10012可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型,通过显示面板10011提供与触摸操作相关的视觉输出。处理器1003可以包括一个或多个处理单元,例如:处理器1003可以包括应用处理器,调制解调处理器,图形处理器,图像信号处理器,控制器,视频编解码器,数字信号处理器,基带处理器,和/或神经网络处理器等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。存储器1002与处理器1003耦合,用于存储各种软件程序和/或计算机指令,存储器1002可包括易失性存储器和/或非易失性存储器。当处理器执行计算机指令时,使电子设备可执行上述方法实施例中手机执行的各个功能或者步骤。
本申请实施例还提供一种芯片系统,该芯片系统包括至少一个处理器和至少一个接口电路。处理器和接口电路可通过线路互联。例如,接口电路可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路可用于向其它装置发送信号。示例性的,接口电路可读取存储器中存储的指令,并将该指令发送给处理器。当所述指令被处理器执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在上述电子设备(如图5所示的电子设备100)上运行时,使得该电子设备执行上述方法实施例中手机执行的各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述方法实施例中手机执行的各个功能或者步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (14)

1.一种内存回收方法,其特征在于,包括:
响应于第一应用的第一应用行为,确定第一应用是否为目标应用,其中,所述第一应用行为至少包括热启动、暖启动和/或切换应用界面,所述目标应用包括至少一个小程序应用;
如果所述第一应用为所述目标应用,提高所述第一应用的内存水线值至第一预设值,所述内存水线值为所述第一应用触发内存空间回收的界限值。
2.根据权利要求1所述的内存回收方法,其特征在于,所述响应于第一应用的第一应用行为,确定第一应用是否为目标应用的步骤包括:
响应于所述第一应用的第一应用行为,从所述第一应用的配置文件中获取所述第一应用的应用标识号;
判断预设目标应用列表中是否包括所述第一应用的应用标识号;所述预设目标应用列表中包括至少一个所述目标应用的应用标识号;
如果所述预设应用列表中包括所述第一应用的应用标识号,则确定所述第一应用为目标应用。
3.根据权利要求1所述的内存回收方法,其特征在于,提高所述第一应用的内存水线值至第一预设值的步骤后,还包括:
在内存水线值提高后的第一预设时间点,将所述第一应用的内存水线值由第一预设值降低至第二预设值。
4.根据权利要求3所述的内存回收方法,其特征在于,将所述第一应用的内存水线值由第一预设值降低至第二预设值的步骤后,还包括:
在所述第一预设时间点和第二预设时间点之间,判断所述第一应用是否触发内存空间回收,所述第二预设时间点晚于所述第一预设时间点;
如果所述第一应用未触发内存空间回收,在所述第二预设时间点将所述第一应用的内存水线值由第二预设值降低至第三预设值。
5.根据权利要求4所述的内存回收方法,其特征在于,在所述第二预设时间点将所述第一应用的内存水线值由第二预设值降低至第三预设值的步骤后,还包括:
确定第一时间点,其中,所述第一时间点是所述第二预设时间点与第三预设时间点之间的其中一个时间点,所述第三预设时间点晚于所述第二预设时间点;
在所述第二预设时间点和所述第一时间点之间,判断所述第一应用是否触发内存空间回收;
如果所述第一应用未触发内存空间回收,在所述第一时间点触发所述第一应用的内存空间回收。
6.根据权利要求4或5所述的内存回收方法,其特征在于,所述判断所述第一应用是否触发内存空间回收的步骤包括:
获取所述第一应用的第一变量值,其中,所述第一变量值包括初始值和过程值,在所述第一应用触发内存空间回收时,所述第一变量值由所述初始值变化为所述过程值;
如果所述第一变量值等于所述初始值,则所述第一应用未触发内存空间回收;
如果所述第一变量值不等于所述初始值,则所述第一应用已触发内存空间回收。
7.根据权利要求4所述的内存回收方法,其特征在于,所述第二预设值为所述第一预设值的四分之一。
8.根据权利要求5所述的内存回收方法,其特征在于,所述第三预设值为所述第一应用的内存水线值被提高之前的初始值。
9.根据权利要求1所述的内存回收方法,其特征在于,所述第一应用行为的触发条件包括用户点击第一应用的图标、点击第一应用的用户界面、扫描第一应用的二维码或者访问第一应用的链接中的至少一种。
10.一种内存回收装置,其特征在于,包括:
响应模块,用于响应于第一应用的第一应用行为,确定第一应用是否为目标应用,其中,所述第一应用行为至少包括热启动、暖启动和/或切换应用界面,所述目标应用包括至少一个小程序应用;
内存回收模块,用于如果所述第一应用为所述目标应用,提高所述第一应用的内存水线值至第一预设值,所述内存水线值为所述第一应用触发内存空间回收的界限值。
11.一种电子设备,其特征在于,包括:处理器和存储器;所述存储器存储有程序指令,当所述程序指令被所述处理器执行时,使得所述电子设备执行权利要求1-9任一项所述的方法。
12.一种芯片系统,其特征在于,包括:存储器和处理器;所述存储器存储有程序指令,当所述程序指令被所述处理器执行时,使得所述芯片系统执行权利要求1-9任一项所述的方法。
13.一种计算机存储介质,其特征在于,所述计算机可读存储介质中存储有程序指令,当所述程序指令在计算机上运行时,使得计算机执行权利要求1-9任一项所述的方法。
14.一种计算机程序产品,其特征在于,当其在计算机上运行时,使得计算机执行权利要求1-9任一项所述的方法。
CN202211369110.6A 2022-11-03 2022-11-03 一种内存回收方法、装置及电子设备 Active CN116700944B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211369110.6A CN116700944B (zh) 2022-11-03 2022-11-03 一种内存回收方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211369110.6A CN116700944B (zh) 2022-11-03 2022-11-03 一种内存回收方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN116700944A true CN116700944A (zh) 2023-09-05
CN116700944B CN116700944B (zh) 2024-08-02

Family

ID=87834533

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211369110.6A Active CN116700944B (zh) 2022-11-03 2022-11-03 一种内存回收方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN116700944B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740071A (zh) * 2016-03-17 2016-07-06 深圳市九洲电器有限公司 一种安卓系统运行速度管理方法及系统
CN112445606A (zh) * 2019-08-30 2021-03-05 华为技术有限公司 内存回收方法及装置
WO2021083378A1 (zh) * 2019-11-01 2021-05-06 华为技术有限公司 一种加速应用程序启动的方法及电子设备
CN114168490A (zh) * 2020-09-10 2022-03-11 华为技术有限公司 确定内存回收阈值的方法及相关设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740071A (zh) * 2016-03-17 2016-07-06 深圳市九洲电器有限公司 一种安卓系统运行速度管理方法及系统
CN112445606A (zh) * 2019-08-30 2021-03-05 华为技术有限公司 内存回收方法及装置
WO2021083378A1 (zh) * 2019-11-01 2021-05-06 华为技术有限公司 一种加速应用程序启动的方法及电子设备
CN114168490A (zh) * 2020-09-10 2022-03-11 华为技术有限公司 确定内存回收阈值的方法及相关设备

Also Published As

Publication number Publication date
CN116700944B (zh) 2024-08-02

Similar Documents

Publication Publication Date Title
WO2021000881A1 (zh) 一种分屏方法及电子设备
CN111191213B (zh) 一种删除安全业务的方法及电子设备
CN113553130B (zh) 应用执行绘制操作的方法及电子设备
CN114168065B (zh) 调整内存配置参数的方法和装置
WO2022078105A1 (zh) 内存管理方法、电子设备以及计算机可读存储介质
CN114461588B (zh) 调节预读窗口的方法及电子设备
CN116089096B (zh) 负载资源调度方法及电子设备
CN116315667B (zh) 数据传输方法、装置、设备及存储介质
CN116257139B (zh) 眼动追踪方法和电子设备
CN113656089A (zh) 应用程序中的类验证方法和装置
CN116700944B (zh) 一种内存回收方法、装置及电子设备
CN114172596B (zh) 信道噪声检测方法及相关装置
CN109871291B (zh) 数据处理方法及装置
CN115729431A (zh) 一种控件内容的拖拽方法、电子设备及系统
CN116662150B (zh) 应用启动耗时检测方法及相关装置
CN114860354B (zh) 一种加载列表的方法及电子设备
CN115175164B (zh) 通信控制方法及相关装置
CN116661985B (zh) 一种垃圾回收的守护线程的管理方法、装置及电子设备
CN117995137B (zh) 一种调节显示屏色温的方法、电子设备及相关介质
CN117234351B (zh) 触控处理方法、终端设备以及存储介质
CN117093119B (zh) 一种应用页面切换方法
CN116185245B (zh) 一种页面显示方法及电子设备
CN116074615B (zh) 摄像头控制方法、装置及终端设备
CN117632323A (zh) 一种显示方法及电子设备
CN117579606A (zh) Ota更新方法及相关装置

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