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

一种内存回收方法和终端设备

文献发布时间:2024-04-18 20:01:55


一种内存回收方法和终端设备

技术领域

本申请涉及终端技术领域,尤其涉及一种内存回收方法和终端设备。

背景技术

目前,终端设备在执行内存分配时,如果可用内存低于设定的第一水线水线,如low水线(low water mark),系统会唤醒内核守护线程进行内存回收,直到系统空闲内存达于设定的第二水线,如high水线(high water mark)。

但是,上述内存回收方法存在灵活性不高的问题,导致终端设备可能出现性能问题。

发明内容

本申请提供了一种内存回收方法和终端设备,提高了内存回收的灵活性。

第一方面,提供了一种内存回收方法,应用于终端设备,该方法包括:基于当前处于运行状态的应用,确定终端设备的当前使用场景;基于上述当前使用场景的负载需求,确定目标内存回收配置参数;以及,基于目标内存回收配置参数执行内存回收操作。

在本申请中,终端设备可以基于当前使用场景的负载需求,确定目标内存回收配置参数,并基于该目标内存回收配置参数执行内存回收操作。其中,该当前使用场景是终端设备基于当前处于运行状态的应用确定。换句话说,本申请中的终端设备可以在不同的使用场景下,基于对应的不同负载需求,确定不同的内存回收配置参数,以实现灵活的内存回收。

第二方面,提供了一种终端设备,该终端设备包括:判断模块和处理模块,其中判断模块,用于基于当前处于运行状态的应用,确定终端设备的当前使用场景;上述处理模块,用于基于上述当前使用场景的负载需求,确定目标内存回收配置参数;以及,基于目标内存回收配置参数执行内存回收操作。

第三方面,提供了另一种终端设备,包括处理器,该处理器与存储器耦合,可用于执行存储器中的指令,以实现上述第一方面中任一种可能实现方式中的方法。可选地,该终端设备还包括存储器。可选地,该终端设备备还包括通信接口,处理器与通信接口耦合。

第四方面,提供了一种处理器,包括:输入电路、输出电路和处理电路。处理电路用于通过输入电路接收信号,并通过输出电路发射信号,使得处理器执行上述第一方面中任一种可能实现方式中的方法。

在具体实现过程中,上述处理器可以为芯片,输入电路可以为输入管脚,输出电路可以为输出管脚,处理电路可以为晶体管、门电路、触发器和各种逻辑电路等。输入电路所接收的输入的信号可以是由例如但不限于接收器接收并输入的,输出电路所输出的信号可以是例如但不限于输出给发射器并由发射器发射的,且输入电路和输出电路可以是同一电路,该电路在不同的时刻分别用作输入电路和输出电路。本申请实施例对处理器及各种电路的具体实现方式不做限定。

第五方面,提供了一种处理装置,包括处理器和存储器。该处理器用于读取存储器中存储的指令,并可通过接收器接收信号,通过发射器发射信号,以执行上述第一方面中任一种可能实现方式中的方法。

可选地,处理器为一个或多个,存储器为一个或多个。

可选地,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。

在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请实施例对存储器的类型以及存储器与处理器的设置方式不做限定。

应理解,相关的数据交互过程例如发送指示信息可以为从处理器输出指示信息的过程,接收能力信息可以为处理器接收输入能力信息的过程。具体地,处理输出的数据可以输出给发射器,处理器接收的输入数据可以来自接收器。其中,发射器和接收器可以统称为收发器。

上述第五方面中的处理装置可以是一个芯片,该处理器可以通过硬件来实现也可以通过软件来实现,当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于该处理器之外,独立存在。

第六方面,提供了一种计算机程序产品,上述计算机程序产品包括:计算机程序(也可以称为代码,或指令),当计算机程序被运行时,使得计算机执行上述第一方面中任一种可能实现方式中的方法。

第七方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序(也可以称为代码,或指令)当其在计算机上运行时,使得计算机执行上述第一方面中任一种可能实现方式中的方法。

附图说明

图1是本申请提供的内存回收的示意图;

图2是本申请实施例提供的终端设备的系统架构示意图;

图3是本申请实施例提供的内存回收方法的流程图;

图4是本申请实施例提供的内存回收方法的第一具体示例的流程图;

图5是本申请实施例提供的内存回收方法的第二具体示例的流程图;

图6是本申请实施例提供的内存回收方法的第三具体示例的流程图;

图7是本申请实施例提供的内存回收方法的第四具体示例的流程图;

图8是本申请实施例提供的终端设备的一种示例的结构框图;

图9是本申请实施例提供的终端设备的又一种示例的结构示意图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

目前,终端设备在执行内存分配时,如果可用内存低于设定的第一水线水线,如low水线(low water mark),系统会唤醒内核守护线程进行内存回收,直到系统空闲内存达于设定的第二水线,如high水线(high water mark)。

但是,上述内存回收方法存在灵活性不高的问题,导致终端设备可能出现性能问题。

图1为本申请提供的内存回收的示意图。如图1所述,横坐标为时间,纵坐标为空闲内存。若空闲内存低于设定的low水线,终端设备将唤醒内核守护进行内存回收,直到空闲内存不低于high水线。

示例性地,low水线为40MB,high水线为100MB,以及第三水线,即min(min watermark)水线为20MB。对应图1中示出的第一阶段,在某应用请求分配一个连续16KB的内存(order为2,即2的2次方个页page,每个page为4KB)的情况下,若此时空闲内存为20M,那么由于空闲低于设定的low水线40MB,终端设备将唤醒内核守护进行内存回收。如第二阶段所示,此时内存消耗的速度由于内存回收的存在趋于降低,即第二阶段对应的线段的斜率降低。接着如第三阶段所示,在空闲内存低于第三水线的情况下,终端设备还可以进行直接回收,直到空闲内存不低于high水线100MB为止,如第四阶段所示。需要说明的是,为了保持更多的应用可以存活在后台,终端设备一般以回收匿名页为主,这个过程需要对不活跃的匿名页进行压缩起来存放,比如把在后台不活跃的应用占用的内存(如300M)压缩至使其仅占100M,以节省出了200M内存。但这个压缩内存的过程是需要消耗较大的处理负载的,若此时处于处理负载比较高的场景(如游戏场景),就会出现内存回收进程抢占处理核心导致终端设备出现流畅性的问题。

应理解,上述直接回收被称为“direct reclaim”。且在该direct reclaim模式下,内存分配的过程会被内存回收的操作所阻塞,增加等待的时间。此外,即使本次只是需要16KB的需求,而且也回收出来了连续的16KB的free空闲内存,但按现在当前内核守护进行的实现,内存回收的进程并不会停止,会继续进行内存回收直接空闲内存达到high水线为止,导致内存回收占用较大处理负载。以及,即使空闲内存高于high水线100M,但由于内存碎片原因,该100M的空闲内存都是一个个4KB的分散的page,终端设备仍然继续回收直到有此次需求的连续16KB内存为止。这就使得内存回收负载进一步变大。

鉴于此,本申请实施例提供了一种内存回收方法和终端设备,终端设备可以基于当前使用场景的负载需求,确定目标内存回收配置参数,并基于该目标内存回收配置参数执行内存回收操作。其中,该当前使用场景是终端设备基于当前处于运行状态的应用确定。换句话说,本申请中的终端设备可以在不同的使用场景下,基于对应的不同负载需求,确定不同的内存回收配置参数,以实现灵活的内存回收。

应理解,本申请实施例中的终端设备也可以称为:用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备(如MiFi,CPE等)、用户代理或用户装置等。本申请实施例涉及的终端设备可以是一种向用户提供语音/数据连通性的设备,例如,具有无线连接功能的手持式设备、车载设备等。目前,一些终端的举例为:手机(mobile phone)、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备,虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、蜂窝电话、无绳电话、会话启动协议(session initiation protocol,SIP)电话、无线本地环路(wireless local loop,WLL)站、个人数字助理(personal digital assistant,PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备,5G网络中的终端设备或者未来演进的公用陆地移动通信网络(public landmobile network,PLMN)中的终端设备等,本申请实施例对此并不限定。

作为示例而非限定,在本申请实施例中,该终端设备还可以是可穿戴设备。可穿戴设备也可以称为穿戴式智能设备,是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如眼镜、手套、手表、服饰及鞋等。可穿戴设备即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能。广义穿戴式智能设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,例如:智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能首饰等。

此外,在本申请实施例中,终端设备还可以是物联网(internet of things,IoT)系统中的终端设备,IoT是未来信息技术发展的重要组成部分,其主要技术特点是将物品通过通信技术与网络连接,从而实现人机互连,物物互连的智能化网络。本申请的终端设备还可以是作为一个或多个部件或者单元而内置于车辆的车载单元、车载模组、车载部件、车载芯片或者车载单元,车辆通过内置的所述车载单元、车载模组、车载部件、车载芯片或者车载单元可以实施本申请的方法。因此,本申请实施例可以应用于车联网,例如车辆外联(vehicle to everything,V2X)、车间通信长期演进技术(long term evolution-vehicle,LTE-V)、车到车(vehicle-to-vehicle,V2V)等。

示例性地,图2为本申请实施例提供的一种终端设备的系统架构示意图。

如图2所示,终端设备包括处理器210、收发器220和显示单元270。其中,显示单元270可以包括显示屏。

可选地,该终端设备还可以包括存储器230。处理器210、收发器220和存储器230之间可以通过内部连接通路互相通信,传递搜寻数据,该存储器230用于存储计算机程序,该处理器210用于从该存储器230中调用并运行该计算机程序。

上述处理器210可以和存储器230合成一个处理装置,更常见的是彼此独立的部件,处理器210用于执行存储器230中存储的程序代码来实现上述功能。具体实现时,该存储器230也可以集成在处理器210中,或者,独立于处理器210。

除此之外,为了使得终端设备的功能更加完善,该终端设备还可以包括输入单元260、音频电路280和传感器201等中的一个或多个。

可选地,上述终端设备还可以包括电源250,用于给终端设备中的各种器件或电路提供电源。

可以理解的是,图2所示的终端设备中的各个模块的操作和/或功能,分别为了实现下述方法实施例中的相应流程。具体可参见下述方法实施例中的描述,为避免重复,此处适当省略详细描述。

可以理解的是,图2所示的终端设备中的处理器210可以包括一个或多个处理单元,例如:处理器210可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signalprocessor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。

处理器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)接口等。

可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端设备的结构限定。在本申请另一些实施例中,终端设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。

可以理解的是,图2所示的电源250用于给处理器210,存储器230,显示单元270,输入单元260和收发器220等供电。

收发器230可以提供应用在终端设备上的包括无线局域网(wireless local areanetworks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。收发器220可以是集成至少一个通信处理模块的一个或多个器件。

终端设备通过GPU,显示单元270,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示单元270和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器210可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。

显示单元270用于显示图像,视频等(如本申请的搜寻界面等)。显示单元270包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。

存储器230可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。存储器230可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端设备使用过程中所创建的数据(比如搜寻数据)等。此外,存储器230可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器210通过运行存储在存储器230的指令,和/或存储在设置于处理器中的存储器的指令,执行终端设备的各种功能应用以及数据处理。

终端设备可以通过音频电路280,以及应用处理器等实现音频功能。例如音乐播放,录音等。

可以理解的是,本实施例示意的结构并不构成对终端设备200的具体限定。在本申请另一些实施例中,终端设备200可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件,或软件和硬件的组合实现。

下面将结合附图,对本申请中的技术方案进行描述。

为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。

需要说明的是,本申请中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。

此外,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b和c中的至少一项(个),可以表示:a,或b,或c,或a和b,或a和c,或b和c,或a、b和c,其中a,b,c可以是单个,也可以是多个。

为了使本申请的目的、技术方案更加清楚直观,下面将结合附图及实施例,对本申请实施例提供的一种内存回收方法和终端设备进行详细说明。应理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图3是本申请实施例提供的一种内存回收方法300的示意性流程图。该方法300可以由具有内存回收功能的设备执行,本申请称为终端设备。如图3所示,该方法300可以包括下列步骤:

S301,终端设备基于当前处于运行状态的应用,确定终端设备的当前使用场景。

应理解,此处涉及到的处于运行状态的应用可以是终端设备中处于前台运行状态的应用(前台应用),也可以是该终端设备中处于后台运行状态的应用(后台应用),本申请对此不做限定。

在一种可能的情况下,终端设备可以基于前台应用,确定上述当前使用场景。

示例性地,在终端设备中存在前台应用和后台应用的情况下,终端设备可以优先基于该前台应用,确定上述当前使用场景。

示例性地,在终端设备中仅存在前台应用的情况下,终端设备可以基于该前台应用,确定上述当前使用场景。

示例性地,在确定前台应用为预设应用的情况,终端设备可以基于该前台应用,确定上述当前使用场景。

在另一种可能的情况下,终端设备可以基于该后台应用,确定上述当前使用场景。

示例性地,在终端设备中仅存在后台应用的情况下,终端设备可以基于该后台应用,确定上述当前使用场景。

示例性地,在终端设备中存在前台应用和后台应用,且在该后台应用中存在有预设应用的后台应用的情况下,终端设备可以基于该为预设应用的后台应用,确定上述当前使用场景。

应理解,上述预设应用可以是预设的,也可以是基于用户操作确定的,本申请对此不做限定。

示例性地,用户可以根据自身需求,通过对预设应用的设置界面或者设置按键等执行上述用户操作,以实现对预设应用的设置。

S302,终端设备基于上述当前使用场景的负载需求,确定目标内存回收配置参数。

在第一种可能的实现方式中,该当前使用场景的负载需求(也可以称为处理负载)可以是预设的。如通过开发人员测试确定的。

在第二种可能的情况下,该当前使用场景的负载需求也可以是终端设备自身确定的。

示例性地,终端设备可以在处于上述当前使用场景的情况下,实时采集获得该当前使用场景对应的实际负载,进而确定上述负载需求。

应理解,上述目标内存回收配置参数可以用于指示终端设备在上述当前使用场景的情况下,执行内存回收操作的负载需求。即内存回收操作的负载需求可以是根据上述目标内存回收配置参数确定的。

示例性地,终端设备可以基于上述当前场景的负载需求,确定目标内存回收配置参数,以使终端设备可以基于该目标内存回收参数执行内存回收操作的处理负载可以小于第一负载阈值。

还应理解,上述目标内存回收配置参数可以至少包括时间片。其中,该时间片可以用于指示终端设备的处理核心执行回收操作的时间,且随着使用场景的负载需求越大,该内存回收配置参数包括的时间片可以越小。

S303,终端设备基于目标内存回收配置参数执行内存回收操作。

应理解,上述第一负载阈值可以用于指示内存回收操作对应的处理负载上限。

示例性地,对应上述S302,随着当前使用场景的负载需求越大,内存回收操作的负载需求可以越小,终端设备在基于该目标内存回收配置参数执行内存回收操作的情况下,可以避免内存回收强占处理核心过多导致终端设备出现的流畅性的问题。

在本申请中,终端设备可以基于当前使用场景的负载需求,确定目标内存回收配置参数,并基于该目标内存回收配置参数执行内存回收操作。其中,该当前使用场景是终端设备基于当前处于运行状态的应用确定。换句话说,本申请中的终端设备可以在不同的使用场景下,基于对应的不同负载需求,确定不同的内存回收配置参数,以实现灵活的内存回收。

下面结合图4,以终端设备为手机为例,对本申请提供的内存回收方法进行详细的描述。

图4为本申请实施例提供的一种内存回收方法400的示意性流程图。如图4所示,该方法400可以包括下列步骤:

S401,手机基于当前处于运行状态的应用,确定手机的当前使用场景。

在一种可能的情况下,手机可以基于前台应用,确定上述当前使用场景。

示例性地,在手机中存在前台应用(如游戏应用)和后台应用的情况下,手机可以优先基于该前台应用,确定上述当前使用场景(如游戏使用场景)。

示例性地,在手机中仅存在前台应用(如游戏应用)的情况下,手机可以基于该前台应用,确定上述当前使用场景(如游戏使用场景)。

示例性地,在确定前台应用为预设应用的情况,手机可以基于该前台应用,确定上述当前使用场景。

在另一种可能的情况下,手机可以基于该后台应用,确定上述当前使用场景。

示例性地,在手机中仅存在后台应用的情况下,手机可以基于该后台应用,确定上述当前使用场景。

示例性地,在手机中存在前台应用和后台应用,且在该后台应用中存在有预设应用(如游戏应用)的后台应用的情况下,手机可以基于该为预设应用的后台应用,确定上述当前使用场景(如游戏使用场景)。

应理解,上述预设应用可以是预设的,也可以是基于用户操作确定的,除上述示出的游戏应用之外,还可以为其他应用,本申请对此不做限定。

示例性地,用户可以根据自身需求,通过对预设应用的设置界面或者设置按键等执行上述用户操作,以实现对预设应用的设置。

S402,手机基于参考信息和上述当前使用场景,确定目标内存回收配置参数包括的时间片,该参考信息包括多个使用场景和该多个使用场景对应的内存回收配置参数。

表一为本申请提供的一种参考信息。

表一

如表一示出的参考信息所示,该参考信息包括多个使用场景,分别为第一使用场景、第二使用场景和第三使用场景。此外,表一还示出了该多个使用场景对应的内存回收配置参数,如第一使用场景对应第一配置参数(时间片为a)、第二使用场景对应第二配置参数(时间片为b),以及第三使用场景对应第三配置参(时间片为c)。

在一种可能的情况下,手机可以将上述当前使用场景与上述表一示出的多个使用场景进行比对,并在确定存在与当前使用场景相同的使用场景的情况下,将该使用场景对应的回收配置参数确定为手机的目标内存回收配置参数。

示例性地,在上述表一示出的第一使用场景为游戏使用场景的情况下,手机可以在确定该第一使用场景与上述当前使用场景相同的情况下,将上述第一配置参数确定为目标内存回收配置参数(时间片为a)。

示例性地,在上述表一示出的第二使用场景为视频使用场景的情况下,手机可以在确定该第二使用场景与上述当前使用场景相同的情况下,将上述第二配置参数确定为目标内存回收配置参数(时间片为b)。

示例性地,在上述表一示出的第三使用场景为拍照使用场景的情况下,手机可以在确定该第三使用场景与上述当前使用场景相同的情况下,将上述第三配置参数确定为目标内存回收配置参数(时间片为c)。

应理解,上述表一示出的参考信息仅仅示例性的,本申请对此不做限定。

S403,手机基于所述目标内存回收配置参数包括的时间片,执行内存回收操作。

应理解,上述参考信息可以是手机基于上述多个使用场景的负载需求确定的。为避免内存回收操作的处理负载过大导致影响用户在当前使用场景下对手机的使用(如游戏界面卡顿),在上述第一使用场景的负载需求大于第二使用场景的负载需求,第二使用场景的负载需求大于第三使用场景的负载需求的情况下,上述不同内存回收配置参数中的时间片取值的关系可以为a<b<c。

示例性地,手机可以在确定该第一使用场景与上述当前使用场景相同的情况下,基于上述第一配置参数执行内存回收操作。其中,该第一配置参数包括的时间片a可以取值为10%,用于表示该内存回收操作可以占用手机的处理核心的最大占用时间片为10%。手机可以在确定该第二使用场景与上述当前使用场景相同的情况下,基于上述第二配置参数执行内存回收操作。其中,该第二配置参数包括的时间片b可以取值可以大于a,如20%,用于表示该内存回收操作可以占用手机的处理核心的最大占用时间片为20%。或者,手机也可以在确定该第三使用场景与上述当前使用场景相同的情况下,基于上述第一配置参数执行内存回收操作。其中,该第一配置参数包括的时间片c可以大于b,如30%,用于表示该内存回收操作可以占用手机的处理核心的最大占用时间片为30%,以避免在上述使用场景下,由于内存回收导致处理核心高负载带来的性能问题(如游戏卡顿等问题),提高用户体验。

可选地,为通过提高内存回收效率,以进一步降低内存回收操作的处理负载,上述目标内存回收配置参数中还可以包括内存回收参数。

应理解,该内存回收参数可以用于指示终端设备对匿名页和文件页的回收比例。其中,使用场景的负载需求越大,该内存回收参数可以越小,该内存回收参数越小,终端设备对文件页的回收比例越大,具体细节如下图5所述。

图5为本申请实施例提供的一种内存回收方法500的示意性流程图。如图5所示,该方法500可以包括下列步骤:

S501,手机基于当前处于运行状态的应用,确定手机的当前使用场景。

同上,在一种可能的情况下,手机可以基于前台应用,确定上述当前使用场景。

示例性地,在手机中存在前台应用(如游戏应用)和后台应用的情况下,手机可以优先基于该前台应用,确定上述当前使用场景(如游戏使用场景)。在手机中仅存在前台应用(如游戏应用)的情况下,手机可以基于该前台应用,确定上述当前使用场景(如游戏使用场景)。或者,在确定前台应用为预设应用的情况,手机可以基于该前台应用,确定上述当前使用场景。

在另一种可能的情况下,手机可以基于该后台应用,确定上述当前使用场景。

示例性地,在手机中仅存在后台应用的情况下,手机可以基于该后台应用,确定上述当前使用场景。在手机中存在前台应用和后台应用,且在该后台应用中存在有预设应用(如游戏应用)的后台应用的情况下,手机可以基于该为预设应用的后台应用,确定上述当前使用场景(如游戏使用场景)。

应理解,上述预设应用可以是预设的,也可以是基于用户操作确定的,除上述示出的游戏应用之外,还可以为其他应用,本申请对此不做限定。

S502,手机基于参考信息和上述当前使用场景,确定目标内存回收配置参数包括的时间片和内存回收参数。该参考信息包括多个使用场景和该多个使用场景对应的内存回收配置参数。

表二为本申请提供的一种参考信息。

表二

如表二示出的参考信息所示,该参考信息包括多个使用场景,分别为第一使用场景、第二使用场景和第三使用场景。此外,表二还示出了该多个使用场景对应的内存回收配置参数,如第一使用场景对应第一配置参数(时间片为a、内存回收参数为x)、第二使用场景对应第二配置参数(时间片为b、内存回收参数为y),以及第三使用场景对应第三配置参数(时间片为c、内存回收参数为z)。

在一种可能的情况下,手机可以将上述当前使用场景与上述表二示出的多个使用场景进行比对,并在确定存在与当前使用场景相同的使用场景的情况下,将该使用场景对应的回收配置参数确定为手机的目标内存回收配置参数。

示例性地,在上述表二示出的第一使用场景为游戏使用场景的情况下,手机可以在确定该第一使用场景与上述当前使用场景相同的情况下,将上述第一配置参数确定为目标内存回收配置参数(时间片为a、内存回收参数为x)。

示例性地,在上述表二示出的第二使用场景为视频使用场景的情况下,手机可以在确定该第二使用场景与上述当前使用场景相同的情况下,将上述第二配置参数确定为目标内存回收配置参数(时间片为b、内存回收参数为y)。

示例性地,在上述表二示出的第三使用场景为拍照使用场景的情况下,手机可以在确定该第三使用场景与上述当前使用场景相同的情况下,将上述第三配置参数确定为目标内存回收配置参数(时间片为c、内存回收参数为z)。

应理解,上述表二示出的参考信息仅仅示例性的,本申请对此不做限定。

S503,手机基于上述目标内存回收配置参数包括的的时间片和内存回收参数执行内存回收操作。

应理解,上述参考信息可以是手机基于上述多个使用场景的负载需求确定的。为避免内存回收操作的处理负载过大导致影响用户在当前使用场景下对手机的使用(如游戏界面卡顿),在上述第一使用场景的负载需求大于第二使用场景的负载需求,第二使用场景的负载需求大于第三使用场景的负载需求的情况下,上述不同内存回收配置参数中的时间片取值的大小关系可以为a<b<c,内存回收参数取值的大小关系可以为x<y<z。

还应理解,内存回收可以主要分为两类。其中,第一类是匿名页的回收,该种内存需要以内存压缩为主,也就是把后台不活跃的内存进行压缩从而省出更多的内存,该过程中需要消耗处理核心资源。第二类是文件页的回收,该种内存回收是对一些文件缓存内容进行回收,如将从磁盘读取的一些图片或字体等资源从内存中清除,下次需要的时候再从磁盘中读取。需要说明的是,第二类内存回收的效率较高,因此本申请可以在高处理负载的场景下,可以调低内存回收参数,以通过多回收文件页,加快内存回收速度从而实现降低内存回收的处理负载。

示例性地,手机可以在确定该第一使用场景与上述当前使用场景相同的情况下,基于上述第一配置参数执行内存回收操作。其中,该第一配置参数包括的时间片a可以取值为10%,用于表示该内存回收操作可以占用手机的处理核心的最大占用时间片为10%,内存回收参数x可以取值为30(取值发范围为0-200),用于指示回收匿名页和文件页的比例是30:170。手机可以在确定该第二使用场景与上述当前使用场景相同的情况下,基于上述第二配置参数执行内存回收操作。其中,该第二配置参数包括的时间片b可以取值可以大于a,如20%,用于表示该内存回收操作可以占用手机的处理核心的最大占用时间片为20%,内存回收参数y可以取值为40(取值发范围为0-200),用于指示回收匿名页和文件页的比例是40:160。或者,手机也可以在确定该第三使用场景与上述当前使用场景相同的情况下,基于上述第一配置参数执行内存回收操作。其中,该第一配置参数包括的时间片c可以大于b,如30%,用于表示该内存回收操作可以占用手机的处理核心的最大占用时间片为30%,内存回收参数z可以取值为50(取值发范围为0-200),用于指示回收匿名页和文件页的比例是50:150。以避免在上述使用场景下,由于内存回收导致处理核心高负载带来的性能问题(如游戏卡顿等问题),提高用户体验。

应理解,上述示出的处理核心可以为多个,即终端设备可以通过多个处理核心,实现本申请提供的内存回收方法。

下面结合图6,以终端设备为手机为例,在上述处理核心包括第一处理核心和第二处理核心的场景下,对本申请提供的内存回收方法进行详细的描述。

应理解,在处理核心包括多个处理核心的情况下,上述内存回收配置参数还可以包括目标处理核心,即终端设备用于执行上述内存回收参数的处理核心。

图6为本申请实施例提供的一种内存回收方法600的示意性流程图。如图6所示,该方法600可以包括下列步骤:

S601,手机基于当前处于运行状态的应用,确定手机的当前使用场景。

同上,在一种可能的情况下,手机可以基于前台应用,确定上述当前使用场景。

示例性地,在手机中存在前台应用(如游戏应用)和后台应用的情况下,手机可以优先基于该前台应用,确定上述当前使用场景(如游戏使用场景)。在手机中仅存在前台应用(如游戏应用)的情况下,手机可以基于该前台应用,确定上述当前使用场景(如游戏使用场景)。或者,在确定前台应用为预设应用的情况,手机可以基于该前台应用,确定上述当前使用场景。

在另一种可能的情况下,手机可以基于该后台应用,确定上述当前使用场景。

示例性地,在手机中仅存在后台应用的情况下,手机可以基于该后台应用,确定上述当前使用场景。在手机中存在前台应用和后台应用,且在该后台应用中存在有预设应用(如游戏应用)的后台应用的情况下,手机可以基于该预设应用的后台应用,确定上述当前使用场景(如游戏使用场景)。

应理解,上述预设应用可以是预设的,也可以是基于用户操作确定的,除上述示出的游戏应用之外,还可以为其他应用,本申请对此不做限定。

S602,手机基于参考信息和上述当前使用场景,确定目标内存回收配置参数包括的时间片、内存回收参数和目标处理核心,该参考信息包括多个使用场景和该多个使用场景对应的内存回收配置参数。

表三为本申请提供的一种参考信息。

表三

如表三示出的参考信息所示,该参考信息包括多个使用场景,分别为第一使用场景、第二使用场景和第三使用场景。此外,表三还示出了该多个使用场景对应的内存回收配置参数,如第一使用场景对应第一配置参数(时间片为a、内存回收参数为x、目标处理核心)、第二使用场景对应第二配置参数(时间片为b、内存回收参数为y、目标处理核心),以及第三使用场景对应第三配置参数(时间片为c、内存回收参数为z、目标处理核心)。

在一种可能的情况下,手机可以将上述当前使用场景与上述表三示出的多个使用场景进行比对,并在确定存在与当前使用场景相同的使用场景的情况下,将该使用场景对应的回收配置参数确定为手机的目标内存回收配置参数。

示例性地,在上述表三示出的第一使用场景为游戏使用场景的情况下,手机可以在确定该第一使用场景与上述当前使用场景相同的情况下,将上述第一配置参数确定为目标内存回收配置参数(时间片为a、内存回收参数为x、目标处理核心)。

示例性地,在上述表三示出的第二使用场景为视频使用场景的情况下,手机可以在确定该第二使用场景与上述当前使用场景相同的情况下,将上述第二配置参数确定为目标内存回收配置参数(时间片为b、内存回收参数为y、目标处理核心)。

示例性地,在上述表三示出的第三使用场景为拍照使用场景的情况下,手机可以在确定该第三使用场景与上述当前使用场景相同的情况下,将上述第三配置参数确定为目标内存回收配置参数(时间片为c、内存回收参数为z、目标处理核心)。

应理解,上述表三示出的参考信息仅仅示例性的,本申请对此不做限定。

S603,手机通过目标处理核心,基于目标内存回收配置参数包括的时间片、内存回收参数和目标处理核心,执行内存回收操作。

应理解,上述参考信息可以是手机基于上述多个使用场景的负载需求确定的。为避免内存回收操作的处理负载过大导致影响用户在当前使用场景下对手机的使用(如游戏界面卡顿),在上述第一使用场景的负载需求大于第二使用场景的负载需求,第二使用场景的负载需求大于第三使用场景的负载需求的情况下,上述不同内存回收配置参数中的时间片取值的大小关系可以为a<b<c,内存回收参数取值的大小关系可以为x<y<z。

此外,在第一处理核心为大核,第二处理核心为小核,且当前使用场景(如游戏使用场景)的负载需求大于或等于负载阈值的情况下,手机可以将第二处理核心确定为目标处理核心。即通过第一处理核心运行游戏应用,通过第二处理核心执行内存回收,以避免内存回收进程抢占一定的第一处理核心,导致手机游戏出现流畅性的问题。

示例性地,手机可以在确定该第一使用场景与上述当前使用场景相同的情况下,基于上述第一配置参数执行内存回收操作。其中,该第一配置参数包括的时间片a可以取值为10%,用于表示该内存回收操作可以占用手机的处理核心的最大占用时间片为10%,内存回收参数x可以取值为30(取值发范围为0-200),用于指示回收匿名页和文件页的比例是30:170,目标处理核心为第二处理核心,用于指示手机通过第二处理核心执行上述内存回收。手机可以在确定该第二使用场景与上述当前使用场景相同的情况下,基于上述第二配置参数执行内存回收操作。其中,该第二配置参数包括的时间片b可以取值可以大于a,如20%,用于表示该内存回收操作可以占用手机的处理核心的最大占用时间片为20%,内存回收参数y可以取值为40(取值发范围为0-200),用于指示回收匿名页和文件页的比例是40:160,目标处理核心为第二处理核心,用于指示手机通过第二处理核心执行上述内存回收。或者,手机也可以在确定该第三使用场景与上述当前使用场景相同的情况下,基于上述第一配置参数执行内存回收操作。其中,该第一配置参数包括的时间片c可以大于b,如30%,用于表示该内存回收操作可以占用手机的处理核心的最大占用时间片为30%,内存回收参数z可以取值为50(取值发范围为0-200),用于指示回收匿名页和文件页的比例是50:150,目标处理核心为第二处理核心,用于指示手机通过第二处理核心执行上述内存回收。以避免在上述使用场景下,由于内存回收导致处理核心高负载带来的性能问题(如游戏卡顿等问题),提高用户体验。

应理解,在基于当前使用场景的负载需求,确定目标内存回收配置参数之前,终端设备还可以判断当前内存状态是否满足内存回收条件,且在确定上当前内存状态满足内存回收条件的情况下执行上述S302、S402、S502或S602。具体细节可以参见如下对图7的描述。

图7为本申请实施例提供的一种内存回收方法700的示意性流程图。如图7所示,该方法700可以包括下列步骤:

S701,手机检测到内存分配指令。

应理解,该内存分配指令可以是处于运行状态的应用生成的,该处于运行状态的应用可以是前台应用或者后应用,本申请对此不做限定。

示例性地,该内存分配指令可以是处于后台运行状态的应用商店在执行下载任务的情况下发起的。或者,也可以是处于前台运行状态的应用商店在执行下载任务的情况下发起的。

S702,手机基于内存分配指令,执行内存分配操作。

S703,手机判断上述内存分配是否失败。

示例性地,在空闲内存低于设定的第一水线(即low水线)的情况下确定内存分配失败。

S704,手机在确定内存分配失败的情况下,确定满足内存回收条件,并基于当前处于运行状态的应用,确定手机的当前使用场景。

同上,手机可以基于前台应用或后台应用,确定上述当前使用场景,具体细节可以参见对上述实施的描述,为避免重复,此处不再做赘述。

S705,手机基于参考信息和上述当前使用场景,确定目标内存回收配置参数包括的时间片、内存回收参数和目标处理核心,该参考信息包括多个使用场景和该多个使用场景对应的内存回收配置参数。

在一种可能的情况下,手机可以将上述当前使用场景与参考信息(如表三示所示)中的多个使用场景进行比对,并在确定存在与当前使用场景相同的使用场景的情况下,将该使用场景对应的回收配置参数确定为手机的目标内存回收配置参数。

S706,手机基于目标内存回收配置参数包括的时间片、内存回收参数和目标处理核心,执行内存回收操作。

应理解,上述参考信息可以是手机基于上述多个使用场景的负载需求确定的。为避免内存回收操作的处理负载过大导致影响用户在当前使用场景下对手机的使用(如游戏界面卡顿),在上述第一使用场景的负载需求大于第二使用场景的负载需求,第二使用场景的负载需求大于第三使用场景的负载需求的情况下,上述不同内存回收配置参数中的时间片取值的大小关系可以为a<b<c,内存回收参数取值的大小关系可以为x<y<z。

此外,在第一处理核心为大核,第二处理核心为小核,且当前使用场景(如游戏使用场景)的负载需求大于或等于负载阈值的情况下,手机可以将第二处理核心确定为目标处理核心。即通过第一处理核心运行游戏应用,通过第二处理核心执行内存回收,以避免内存回收进程抢占一定的第一处理核心,导致手机游戏出现流畅性的问题。

还应理解,目前在安卓手机的底层可以使用Linux内核,手机在确定满足内存回收条件的情况下,可以唤醒内核守护线程(Kernel Swap Daemon,kswapd)线程,以通过该kswapd线程实现内存回收。其中,该kswapd是Linux内核中的内核守护线程。此外,上述时间片是通过将kswapd线程划分在一个控制组(control group,cgroup)实现的。其中,该cgroup是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,在本申请中可以实现对处理核心等资源精细化的控制。内存回收参数可以为Swappiness,是Linux内核内存回收参数,它表示对匿名页的回收的倾向程度。可以简单理解为回收匿名页对匿名页和文件页中的占比,例如取值范围为0~200。

还应理解,上述各个实施例之间也可以相互耦合,本申请对此不作限定。且上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

上文中结合图1至图7,详细描述了本申请实施例的内存回收方法,下面将结合图8至图9,详细描述本申请实施例的终端设备。

图8示出了本申请实施例提供的一种终端设备800。该终端设备800包括:判断模块801和处理模块802。

其中,判断模块801用于:基于于当前处于运行状态的应用,确定终端设备的当前使用场景;处理模块802用于:基于上述当前使用场景的负载需求,确定目标内存回收配置参数;以及,基于目标内存回收配置参数执行内存回收操作。

可选地,上述内存回收操作的负载需求是根据目标内存回收配置参数确定的,该当前使用场景的负载需求越大,内存回收操作的负载需求越小。

可选地,上述内存回收配置参数包括时间片;其中,使用场景的负载需求越大,上述内存回收配置参数包括的时间片越小。

可选地,上述内存回收配置参数还包括内存回收参数,该内存回收参数用于指示终端设备对匿名页和文件页的回收比例;其中,使用场景的负载需求越大,上述内存回收参数越小,终端设备对所述内存回收参数越小对文件页的回收比例越大。

可选地,上述内存回收配置参数还包括用于执行上述内存回收操作的目标处理核心;其中,在上述终端设备包括多个处理核心的情况下,上述当前处于运行状态的应用对应的处理核心与上述目标处理核心为不同的处理核心。

可选地,该处理模块802用于:基于参考信息和上述当前使用场景,确定上述目标内存回收配置参数;其中,上述参考信息包括多个使用场景和上述多个使用场景对应的内存回收配置参数,该参考信息是终端设备基于多个使用场景的负载需求确定的。

可选地,该判断模块801用于:判断当前内存状态是否满足内存回收条件;处理模块802用于:在确定上述当前内存状态满足上述内存回收条件的情况下,基于上述当前使用场景的负载需求,确定上述目标内存回收配置参数,所述内存分配指令是所述处于运行状态的应用生成的。

可选地,上述判断当前内存状态是否满足上述内存回收条件的操作是上述终端设备在检测到内存分配指令的情况下执行的。

应理解,这里的终端设备800以功能模块的形式体现。这里的术语“模块”可以指应用特有集成电路(application specific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。在一个可选例子中,本领域技术人员可以理解,终端设备800可以具体为上述实施例中的终端设备,或者,上述实施例中终端设备的功能可以集成在终端设备800中,终端设备800可以用于执行上述方法实施例中与终端设备对应的各个流程和/或步骤,为避免重复,在此不再赘述。

上述终端设备800具有实现上述方法中终端设备执行的相应步骤的功能;上述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。在本申请的实施例,图8中的终端设备800也可以是芯片或者芯片系统,例如:片上系统(system on chip,SoC)。

图9示出了本申请实施例提供的另一终端设备900。该终端设备900包括:处理器901和存储器902,通信接口903以及总线904。其中,存储器902用于存储指令,该处理器901用于执行该存储器902存储的指令。处理器901、存储器902和通信接口903通过总线904实现彼此之间的通信连接。

其中,处理器901用于:基于当前处于运行状态的应用,确定终端设备的当前使用场景;基于上述当前使用场景的负载需求,确定目标内存回收配置参数;以及,基于目标内存回收配置参数执行内存回收操作。

应理解,终端设备900可以具体为上述实施例中的终端设备,上述实施例中终端设备的功能可以集成在终端设备900中,终端设备900可以用于执行上述方法实施例中与终端设备对应的各个步骤和/或流程。

可选地,该存储器902可以包括只读存储器和随机存取存储器,并向处理器901提供指令和数据。存储器902的一部分还可以包括非易失性随机存取存储器。例如,存储器902还可以存储设备类型的信息。该处理器901可以用于执行存储器中存储的指令,并且该处理器执行该指令时,该处理器901可以执行上述方法实施例中与终端设备对应的各个步骤和/或流程。

应理解,在本申请实施例中,该处理器可以是中央处理单元(Central ProcessingUnit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器执行存储器中的指令,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者电子设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上上述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以上述权利要求的保护范围为准。

相关技术
  • 栅极驱动器和包括该栅极驱动器的显示装置
  • 飞行器致动器组件、飞行器致动器、保持装置及一套部件
  • 包括扭矩限制装置的致动驱动器
  • 包括机械辊扭矩限制器的机电致动器
技术分类

06120116575485