CN109992402B - 内存处理方法和装置、电子设备、计算机可读存储介质 - Google Patents

内存处理方法和装置、电子设备、计算机可读存储介质 Download PDF

Info

Publication number
CN109992402B
CN109992402B CN201711489135.9A CN201711489135A CN109992402B CN 109992402 B CN109992402 B CN 109992402B CN 201711489135 A CN201711489135 A CN 201711489135A CN 109992402 B CN109992402 B CN 109992402B
Authority
CN
China
Prior art keywords
memory
application
processed
recoverable
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201711489135.9A
Other languages
English (en)
Other versions
CN109992402A (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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201711489135.9A priority Critical patent/CN109992402B/zh
Priority to US16/138,439 priority patent/US10698837B2/en
Priority to EP18201257.5A priority patent/EP3506114B1/en
Priority to PCT/CN2018/112067 priority patent/WO2019128431A1/en
Publication of CN109992402A publication Critical patent/CN109992402A/zh
Application granted granted Critical
Publication of CN109992402B publication Critical patent/CN109992402B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

本申请涉及一种内存处理方法和装置、电子设备、计算机可读存储介质。该方法包括:获取待处理应用所占用的可回收内存页;获取所述待处理应用对每个所述可回收内存页的空闲时长;根据所述每个所述可回收内存页的空闲时长确定时长阈值;从所述可回收内存页中选取空闲时长超过所述时长阈值的内存页进行回收。上述内存处理方法和装置、电子设备、计算机可读存储介质可保证在整个系统内存变大的情况下,对每个应用的负面影响最小,保持了对待处理应用内存的回收与运行之间的平衡性。

Description

内存处理方法和装置、电子设备、计算机可读存储介质
技术领域
本申请涉及数据处理领域,特别是涉及一种内存处理方法和装置、电子设备、计算机可读存储介质。
背景技术
电子设备上安装的应用在运行时,需要占用一定的内存。内存是一个应用在运行过程中数据的主要存储介质。由于电子设备上的内存容量有限,当后台应用占据的内存过多时,会影响前台应用的运行效率。因而需要对内存进行回收,以提高前台应用的运行效率。
传统对内存处理方法是将处于后台运行的单个应用占据的内存全部回收。然而,将单个应用使用的内存完全回收后将导致该应用下次启动和执行过程中需要将几乎所有被回收的内存重新加载回来,导致被回收内存的应用的运行速度显著降低。
发明内容
本申请实施例提供一种内存处理方法和装置、电子设备、计算机可读存储介质,可以在提高前台应用的运行效率的同时,降低对被回收内存的应用的运行的影响。
一种内存处理方法,包括:
获取待处理应用所占用的可回收内存页;
获取所述待处理应用对每个所述可回收内存页的空闲时长;
根据所述每个所述可回收内存页的空闲时长确定时长阈值;
从所述可回收内存页中选取空闲时长超过所述时长阈值的内存页进行回收。
一种内存处理装置,所述装置包括:
内存页获取模块,用于获取待处理应用所占用的可回收内存页;
时长确定模块,用于获取所述待处理应用对每个所述可回收内存页的空闲时长;根据所述每个所述可回收内存页的空闲时长确定时长阈值;
内存回收模块,用于从所述可回收内存页中选取空闲时长超过所述时长阈值的内存页进行回收。
一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行本申请各实施例中所述的内存处理方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请各实施例中所述的内存处理方法的步骤。
本申请实施例提供的内存处理方法和装置、电子设备、计算机可读存储介质,通过获取待处理应用所占用的可回收内存页及其空闲时长,然后根据该空闲时长来确定时长阈值,并对空闲时长超过时长阈值的内存页进行回收,由于回收的对象是可回收内存页,且并非一定是对所有可回收内存页均进行回收,而是按照与每个可回收内存页的空闲时长,选取空闲时长超过相应的时长阈值的内存页进行回收,进一步降低了对待处理应用的运行影响,且回收的内存页可释放出来供其它应用使用,保证在整个系统内存变大的情况下,对每个应用的负面影响最小,又提高了内存使用效率,保持了对待处理应用内存的回收与运行之间的平衡性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中电子设备的内部结构示意图;
图2为一个实施例中电子设备中的系统的部分框架示意图;
图3为一个实施例中内存处理方法的流程图;
图4A为一个实施例中无关类应用的回收比例曲线示意图;
图4B为一个实施例中线性类应用的回收比例曲线示意图;
图4C为一个实施例中非线性类应用的回收比例曲线示意图;
图5为另一个实施例中获取对可回收内存页的回收数量法的流程图;
图6为另一个实施例中内存处理方法的流程图;
图7为一个实施例中内存处理装置的结构框图;
图8为另一个实施例中内存处理装置的结构框图;
图9为一个实施例中手机的部分结构的框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种电子设备的内部结构示意图。该电子设备包括通过系统总线连接的处理器、存储器和显示屏。其中,该处理器用于提供计算和控制能力,支撑整个电子设备的运行。存储器用于存储数据、程序、和/或指令代码等,存储器上存储至少一个计算机程序,该计算机程序可被处理器执行,以实现本申请实施例中提供的适用于电子设备的内存处理方法。存储器可包括磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)等非易失性存储介质,或随机存储记忆体(Random-Access-Memory,RAM)等。例如,在一个实施例中,存储器包括非易失性存储介质及内存储器。非易失性存储介质存储有操作系统、数据库和计算机程序。该数据库中存储有用于实现以上各个实施例所提供的一种内存处理方法相关的数据,比如可存储有每个应用的名称以及为每个应用分配的内存页等信息。该计算机程序可被处理器所执行,以用于实现本申请各个实施例所提供的一种内存处理方法。内存储器为非易失性存储介质中的操作系统、数据库和计算机程序提供高速缓存的运行环境。显示屏可以是触摸屏,比如为电容屏或电子屏,用于显示前台应用的界面展示信息,还可以被用于检测作用于该显示屏的触摸操作,生成相应的指令,比如进行前后台应用的切换指令等。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。如该电子设备还包括通过系统总线连接的网络接口,网络接口可以是以太网卡或无线网卡等,用于与外部的电子设备进行通信,比如可用于同服务器进行通信。
在一个实施例中,如图2所示,提供了一种电子设备的部分架构图。其中,该电子设备的架构系统中包括JAVA空间层210、本地框架层220以及内核(Kernel)空间层230。JAVA空间层210上可包含冻结管理应用212,电子设备可通过该冻结管理应用212来实现对各个应用的冻结策略,对后台耗电的相关应用做冻结和解冻等管理操作。本地框架层220中包含资源优先级和限制管理模块222和平台冻结管理模块224。电子设备可通过资源优先级和限制管理模块222实时维护不同的应用处于不同优先级和不同资源的组织中,并根据上层的需求来调整应用程序的资源组别从而达到优化性能,节省功耗的作用。电子设备可通过平台冻结管理模块224将后台可以冻结的任务按照进入冻结时间的长短,分配到对应预设的不同层次的冻结层,可选地,该冻结层可包括三个,分别是:CPU限制睡眠模式、CPU冻结睡眠模式、进程深度冻结模式。其中,CPU限制睡眠模式是指对相关进程所占用的CPU资源进行限制,使相关进程占用较少的CPU资源,将空余的CPU资源向其它未被冻结的进程倾斜,限制了对CPU资源的占用,也相应限制了进程对网络资源以及I/O接口资源的占用;CPU冻结睡眠模式是指禁止相关进程使用CPU,而保留对内存的占用,当禁止使用CPU资源时,相应的网络资源以及I/O接口资源也被禁止使用;进程深度冻结模式是指除禁止使用CPU资源之外,进一步对相关进程所占用的内存资源进行回收,回收的内存可供其它进程使用。内核空间层230中包括UID管理模块231、Cgroup模块232、Binder管控模块233、进程内存回收模块234以及冻结超时退出模块235。其中,UID管理模块231用于实现基于应用的用户身份标识(UserIdentifier,UID)来管理第三方应用的资源或进行冻结。相比较于基于进程身份标识(Process Identifier,PID)来进行进程管控,通过UID更便于统一管理一个用户的应用的资源。Cgroup模块232用于提供一套完善的中央处理器(Central Processing Unit,CPU)、CPUSET、内存(memory)、输入/输出(input/output,I/O)和Net相关的资源限制机制。Binder管控模块233用于实现后台binder通信的优先级的控制。其中,本地框架层220的接口模块包含开发给上层的binder接口,上层的框架或者应用通过提供的binder接口来发送资源限制或者冻结的指令给资源优先级和限制管理模块222和平台冻结管理模块224。进程内存回收模块234用于实现进程深度冻结模式,这样能当某个第三方应用长期处于冻结状态的时候,会主要释放掉进程的文件区,从而达到节省内存的模块,也加快该应用在下次启动时的速度。冻结超时退出模块235用于解决出现冻结超时场景产生的异常。通过上述的架构,可实现本申请各个实施例中的内存处理方法。
在一个实施例中,如图3所示,提供了一种内存处理方法,本实施例以该方法应用于如图1所示的电子设备为例进行说明。该方法包括:
步骤302,获取待处理应用所占用的可回收内存页。
待处理应用表示需要进行对占用内存进行回收的应用。该内存(又称随机存取存储器,random access memory,RAM)表示运行程序时使用的内存(即运行内存),只能临时存储数据,用于与CPU交换高速缓存数据,但是内存本身不能用于长期存储数据,可为如图1所示的内存储器。通常的,待处理应用为后台应用。后台应用为处于后台运行的应用;对应地,处于前台运行的应用即为前台应用。一个应用(Application,简称APP)的运行通常是由相关的多个进程的运行而体现的。进程(process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。前台应用运行时涉及的进程即为前台进程,后台应用运行时涉及的进程即为后台进程。
应用在运行的状态下需要占用内存空间来存储运行过程中的数据。不同的应用在不同的运行状态占用的内存空间大小不一定相同。内存页是操作系统对内存进行管理的单位,不同的电子设备设置的内存页占据的单位内存大小不一定相同。比如电子设备内的内存空间被划分为100000个内存页,待处理应用占用的内存页为内存页100至内存页200,而其中的内存页130至内存页200为可回收内存页。
在一个实施例中,电子设备可预先记录待处理应用在运行所占用的所有内存页,并从该所有内存页中获取可收回内存页。可回收内存页表示可进行回收,且回收后对待处理应用以及其它应用的运行不造成影响或者造成的影响较小的内存页。
在一个实施例中,电子设备可记录该所有内存页中,哪些内存页为可回收内存页,哪些内存页为不可回收内存页,并根据该记录信息来获取待处理应用占用的可回收内存页。
步骤304,获取待处理应用对每个可回收内存页的空闲时长。
由于内存页中存储的数据并非一直被应用所使用,对内存页的空闲时长表示系统为该待处理应用分配内存页后,该内存页中存储的数据在最近一次被使用之后,处于未被使用状态的持续时长。电子设备根据每个内存页的数据使用情况,来实时更新每个内存页的空闲时长,当准备进行对待处理应用占用的内存页进行回收时,可获取最新记录的每个可回收内存页的空闲时长。
在一个实施例中,当最近一次发起对内存页的分配、回收、释放等情形,或者对处理器中缓存的使用情况进行查询的情况,均判定对相应涉及到的内存页的数据进行了使用,并将产生对应情形下的系统时间最为最近一次对内存页的数据使用时间,当前时间和该最近时间之差即为对相应内存页的空闲时长。
在一个实施例中,电子设备可对每个内存页创建对应的时间戳,该时间戳记录对应内存页中的数据在最近一次的使用时间。在操作系统中,每当主动发起对内存的分配、回收、释放等时机,可对相应内存页的活跃度进行更新,并将该更新时间记录在该时间戳中。或者在系统定时检查处理器缓存的使用情况,可判定当前缓存中的数据都为当前使用的数据,并更新所涉及到的内存页的时间戳,将该更新时间记录在该时间戳中。可选地,可将最新记录到的更新时间替换掉上一次的更新时间,以减少更新时间的资源占用。
步骤306,根据每个可回收内存页的空闲时长确定时长阈值。
其中,时长阈值表示用于决定是否对可回收内存页进行回收的临界数值。时长阈值可为固定的数值,或者还可根据每个可回收内存页的空闲时长而确定的时长阈值,空闲时长不同,所确定的时长阈值也不一定相同。
在一个实施例中,时长阈值可为所有可回收内存页的空闲时长的加权平均值,或者还可为从该所有可回收内存页的空闲时长中选取一个空闲时长,将选取的空闲时长作为时长阈值。比如可在该待处理应用占用的所有可回收内存页的空闲时长中,选取处于与中位数相接近的,或者处于排序在某一位置上的空闲时长,将选取的空闲时长作为时长阈值。
步骤308,从可回收内存页中选取空闲时长超过时长阈值的内存页进行回收。
电子设备可按照所确定的时长阈值,从该待处理应用占用的可回收内存页中,选取空闲时长超过该时长阈值的内存页进行回收,以释放出该时长阈值的可回收内存页,供前台应用或其它应用所使用,提高系统的综合处理效率。可选地,电子设备可通过上述的进程内存回收模块234,按照该时长阈值从可回收内存页中进行内存页的回收,释放长时间不使用的内存,提高内存使用效率,且使得回收内存页之后,对该待处理应用造成的影响也较小。在一个实施例中,回收的内存中的存储数据可存储至电子设备的非易失性存储介质或其它外接存储介质中,比如可为将回收的内存中的存储数据存储至电子设备的flash闪存或硬盘等内置的非易失性存储介质中。
举例来说,可回收内存页有100页,相应的空闲时长分别处于5秒至15分钟之间,当根据该空闲时长而确定的时长阈值为5分钟时,可从该100页的内存页中,回收空闲时长超过5分钟的内存页,将回收的内存页进行释放,使得电子设备的空闲的内存页相应的增加,并可供给前台应用或其它的后台应用所使用。
上述的内存处理方法,通过获取待处理应用所占用的可回收内存页及其空闲时长,然后根据该空闲时长来确定时长阈值,并对空闲时长超过时长阈值的内存页进行回收,由于回收的对象是可回收内存页,且并非一定是对所有可回收内存页均进行回收,而是按照与每个可回收内存页的空闲时长,选取空闲时长超过相应的时长阈值的内存页进行回收,进一步降低了对待处理应用的运行影响,且回收的内存页可释放出来供其它应用使用,保证在整个系统内存变大的情况下,对每个应用的负面影响最小,又提高了内存使用效率,保持了对待处理应用内存的回收与运行之间的平衡性。
在一个实施例中,步骤304包括:获取每个可回收内存页的时间戳记录的更新时间,根据更新时间计算出对应可回收内存页的空闲时长。
电子设备可通过上述的资源优先级和限制管理模块222,为每个内存页创建一个时间戳,该时间戳用于记录对应的更新时间,更新时间表示对应内存页最近被使用的时间。当检测到每个内存页中的内存被使用时,可对该时间戳记录的更新时间进行更新。
其中,每当最近一次发起对内存页的分配、回收、释放等情形,或者对处理器中缓存的使用情况进行查询的情况,均判定对相应涉及到的内存页的数据进行了使用,并将产生对应情形下的系统时间作为该更新时间。当开始执行内存回收机制时,可根据该时间戳记录的更新时间和当前系统时间,可计算出相应的内存页的空闲时长。当前时间和该最近时间之差即为对相应内存页的空闲时长。
通过利用软件创建时间戳的方式来记录每个可回收内存页的更新时间,根据该更新时间来确定空闲时长,可以有效兼容不同的处理器,提高了对内存回收的通用性。
在一个实施例中,步骤304包括:获取通过最近最久未使用LRU管理单元记录的每个可回收内存页的更新时间,根据更新时间计算出对应可回收内存页的空闲时长。
在处理器中的内存管理或缓存单元中,设置相应的最近最久未使用(LeastRecently Used,LRU)管理单元,用于对最近使用到的内存进行统计。LRU管理单元可记录每个内存地址以及该内存地址的更新时间,当某一地址的内存被使用到时,处理器将对应的内存地址和更新时间放入LRU管理单元中保存。当开始执行内存回收机制时,可根据该内存地址和内存页之间的对应关系,可获知每个内存地址对应的内存页,进而可从LRU管理单元中读取对应内存页的更新时间。其中,每当最近一次发起对内存页的分配、回收、释放等情形,或者对处理器中缓存的使用情况进行查询的情况,均判定对相应涉及到的内存页的数据进行了使用,并将产生对应情形下的系统时间作为该更新时间。
当LRU管理单元用满后,可产生中断信息并通知操作系统,操作系统在读取LRU管理单元的数据后可清空其中的数据,使得LRU管理单元可重新开始工作,存储每个内存地址及其对应的更新时间等信息。
本实施例中,通过创建LRU管理单元,可以精确地追踪每一个内存的使用情况,提高了对内存页的更新时间检测的准确性,也提高了内存回收的便利性。
在一个实施例中,步骤306包括:根据每个可回收内存页的空闲时长计算出待处理应用对可回收内存页的平均空闲时长,将平均空闲时长作为时长阈值。
其中,平均空闲时长可为待处理应用所占用的可回收内存页中,每个内存页的占用时长的平均值。电子设备可根据统计到的每个内存页的占用时长,调用相应的计算单元进行计算,以计算出该平均空闲时长,将该平均空闲时长作为时长阈值。
通过将平均空闲时长作为时长阈值,可提高对时长阈值的计算效率,且计算简单,从而也相应提高了对内存回收的效率。
在一个实施例中,根据每个可回收内存页的空闲时长确定时长阈值,包括:获取对可回收内存页的回收数量;根据回收数量从每个可回收内存页的空闲时长中选取第K大的空闲时长,将选取的空闲时长作为时长阈值;超过第K大的空闲时长的数量为回收数量。
回收数量为对内存页的回收数量,该数量为正整数。回收数量可根据待处理应用的优先级及其占用的可回收内存页的总数量、空闲时长等其中的一种或多种来确定。可选地,该回收数量可与对应应用的优先级负相关,与可回收内存页的总数量呈正相关。当对应应用的优先级越低时,回收数量相应越大;当可回收内存页的总数量越大时,则对应的回收数量也越大。
电子设备可按照每个可回收内存页的空闲时长从大到小进行排序,并选取第K大的空闲时长,将该空闲时长作为时长阈值。其中,超过第K大的空闲时长的数量即为该回收数量。可以理解地,K为不超过回收数量的自然数。举例来说,可回收内存页的总数量有100,当确定的回收数量为50时,则K=51,可从该100个可回收内存页的空闲时长中,选取第51大的空闲时长,将该空闲时长作为时长阈值,并选取空闲时长超过该第51大的空闲时长的50个回收内存页进行回收。
通过选取第K大的空闲时长作为时长阈值,提高了对可回收内存进行回收的灵活性。
在一个实施例中,获取对可回收内存页的回收数量,包括:获取与待处理应用对应的回收比例;根据可回收内存页及回收比例确定回收数量。
回收比例表示对待回收的内存的进行回收的比例,回收比例用于指导对可回收内存的回收的多少。比如回收比例为50%,表示可回收50%的占用内存。电子设备预设了不同的应用对应的回收比例。可选地,可建立不同的回收比例与应用标识之间的对应关系,电子设备可根据待处理应用的应用标识与该回收比例之间的对应关系,获取对应的回收比例。其中,应用标识用于唯一标识一个应用,可由预设位数的数字、字母或其它字符等其中的一种或多种构成。
在一个实施例中,回收比例可为根据待处理应用的二次启动时长而确定,电子设备可预先测试对待处理应用所占用的可回收内存页按照不同的比例进行回收。并检测回收该对应比例的内存页后,待处理应用再次启动时,所需的启动时长,该启动时长即为二次启动时长。根据不同的比例对应的二次启动时长,确定一个相对合适的比例,将所确定的比例作为与该待处理应用对应的回收比例。
回收数量可为可回收内存页的总数与确定的回收比例之间的乘积。当该乘积不为整数时,可选取与该乘积近似的一个整数,比如可按照四舍五入的方式确定最接近的一个整数作为回收数量,或者还可按照截尾法或进位法等方式确定相应的整数作为回收数量。
以按照四舍五入的方式确定可回收数量为例说明。比如,当可回收内存页有100页时,若回收比例为30.5%,得到的乘积为30.5,则可从该100页可回收内存页中回收31页,若回收比例为21.2%时,则可回收21页。
通过获取与待处理应用对应的回收比例,再按照回收比例来确定回收数量,可进一步提高了对回收数量确定的灵活性。
在一个实施例中,获取与待处理应用对应的回收比例,包括:获取待处理应用的应用类型;获取根据与应用类型对应的回收模型计算出的回收比例。
其中,应用类型为根据对内存回收后,对待处理应用的运行影响而设置的类型。应用类型包括无关类、线性类以及非线性类。无关类表示对待处理应用的可回收内存回收后,无论回收多少,均对对应的应用并无显著影响。线性类表示随着对可回收内存的回收比例的增多,对应的应用的二次启动时长也随之增加,其中该二次启动时长与回收比例之间呈线性或接近线性增长的关系。非线性类表示既非无关类也非线性类的其它类型。其中,无显著影响表示不同回收比例对应的二次启动时长相比正常启动时长的超出比例均小于预设的比例范围。接近线性表示不同回收比例按照对应接近的斜率拟合出的二次启动时长,与对应回收比例下的二次启动时长之间的误差不超过预设范围内的误差。
电子设备针对不同的应用,按照不同的回收比例回收内存后对该应用的影响情况,设置了该应用所属的应用类型。针对每种应用类型,电子设备进一步设置了对应的回收模型,根据该回收模型,计算出对应的应用类型被回收不同的比例的可回收内存页后,二次启动时长的长短。
按照不同的回收比例和对应的二次启动时长,确定出最优的回收比例,使得在保持二次启动时长相比正常启动时长增加不大的情况下,回收比例最大,获取该最优的回收比例。
在一个实施例中,当待处理应用的应用类型为无关类时,通过该回收模型计算出的回收比例可为100%,即可对该可回收内存页进行100%回收。当待处理应用的应用类型为非线性类时,可选取一个适当的比例作为回收比例,使得被回收的内存页数量与对应应用的二次启动时长之间的性价比最高。比如可选取二次启动时长为预设的时长阈值时对应的比例,将该比例作为回收比例。或者可选取二次启动时长为正常启动时长的预设倍数时对应的比例,将该比例作为回收比例。其中,预设的时长阈值或者预设倍数可为根据经验值所设置的合适数值。比如该时长阈值可为2秒,或者3秒等,预设倍数可为1.5倍或者2倍等。
当待处理应用的应用类型为线性类时,可按照对应不同的斜率确定相应的回收比例,其中,该斜率表示以不同回收比例下对应的二次启动时长所形成的曲线关于该回收比例的倾斜程度的量。斜率越大,则确定的回收比例相对越小,以保持对待处理应用内存的回收与运行之间的平衡性。
举例来说,如图4A、4B至4C所示,分别为一个实施例中无关类、线性类和非线性类的应用的回收比例曲线。其中,该回收比例曲线中的横坐标表示回收比例,纵坐标表示处于对应回收比例下的二次启动时长。其中,无关类的回收比例曲线反映出了对应应用在可回收内存页在按不同的回收比例进行回收后,对应的二次启动时长没有变化或者变化很小。线性类的回收比例曲线在不同的回收比例下,对应的斜率没有变化或者变化很小,而非线性类的回收比例曲线则有的地方斜率较大,有的地方斜率相对较小。针对非线性类的应用,可选取最小斜率对应的回收比例,作为对可回收内存页的回收比例。
在一个实施例中,如图5所示,获取对可回收内存页的回收数量,包括:
步骤502,获取与待处理应用不同的回收比例与二次启动时长之间的对应关系。
回收比例表示对待回收的内存的进行回收的比例,回收比例用于指导对可回收内存的回收的多少。比如回收比例为50%,表示可回收50%的占用内存。二次启动时长是指待处理应用占用的可回收内存页被回收对应的回收比例后,再次启动时所花费的时长。
电子设备可针对每个应用,设置相应的回收比例与二次启动时长之间的对应关系。该对应关系表示该应用所占内存中,回收不同比例的可回收内存后,对应的二次启动时长。可选地,该对应关系可为相应的回收比例与二次启动时长之间的对照表,或者回收比例曲线。该曲线为不同的回收比例下对应的二次启动时长。
步骤504,根据回收比例与二次启动时长之间的对应关系确定可回收内存页的回收比例。
步骤506,根据回收比例与可回收内存页的总数量确定回收数量。
可选地,电子设备可设置对应的启动时长阈值,将二次启动时长达到该启动时长阈值时,对应的比例确定为对可回收内存页的回收比例。其中,该启动时长阈值可为预设的经验数值,进一步地,不同应用对应的启动时长阈值可不一定相同,比如可根据对应应用的正常启动时长来确定对应的启动时长阈值,将正常启动时长的1.5倍或2倍的时长作为该启动时长阈值。
根据该对应关系,参照不同的二次启动时长来选取合适的回收比例,作为对该应用占用的可回收内存页的回收比例,进一步保持了对待处理应用内存的回收与运行之间的平衡性。
在一个实施例中,步骤302包括:查询待处理应用所占用的内存的所有内存页;从所有内存页中获取可回收内存页。
可选地,电子设备可实时记录不同的应用所占用内存的内存页,并针对该每个被占用的内存页,进一步实时记录其是否可被回收。比如,当存在某一内存页中的数据正在被其它应用或者该待处理应用所使用时,则判定该内存页为不可回收的内存页,当记录到被占用的内存页中的数据处于无应用使用状态,或者处于该无应用使用状态的持续时长超过预设时长时,则判定该内存页为可回收内存页。
针对待处理应用,可从预先记录的信息中查询其所占用所有的内存页,并根据所记录的每个内存页的使用状态,判定其是否为可回收内存页,然后获取所有的可回收内存页。
在一个实施例中,查询待处理应用所占用的内存的所有内存页,包括:遍历待处理应用的内存映射文件;通过内存映射文件查询待处理应用占用的所有内存页。
内存映射文件(Memory-Mapped Files)是由一个文件到一块内存的映射。电子设备针对该待处理应用建立了对应的内存映射文件,该内存映射文件中设置了对应的应用所占用的内存页,通过遍历该待处理应用对应的内存映射文件,并从每个遍历到的内存映射文件中读取该待处理应用占用的内存页,从而可获取到该待处理应用所占用的所有的内存页,提高了对待处理应用占用的内存页的查询效率和查询的全面性。
在一个实施例中,从所有内存页中获取可回收内存页,包括:从所有内存页中剔除携带占用标记的内存页;从剔除后的内存页中获取可回收内存页。
其中,针对查询出的被待处理应用所占用的所有的内存页,电子设备可检测每个查询出的内存页是否携带有占用标记,或者是否被多个应用所占用。其中,占用标记表示对应的内存页中存储的数据正处于对待处理应用所使用,或者是其中的数据是待处理应用在保持正常运行的过程中,不可缺少的数据,当该数据被删除后,待处理应用要么无法正常运行,或者需要反复占用新的内存页来存放对应的数据,针对检测出的这类数据,电子设备可对存储该类数据的内存页而设置占用标记,以表示对应的内存页不能回收。
被待处理应用占用的内存页中,其中存储的数据还可能被其它应用所使用,即有多个应用均在使用该内存页中的数据,针对该类内存页,也可将其设置占用标记,使电子设备同样将其剔除,以表示不从该类内存页中进行回收。
针对剔除后的内存页,保留下来的内存页即为可回收内存页,电子设备可从该内存页中进行内存回收。
在一个实施例中,电子设备可调用如图2中所示的资源优先级和限制管理模块222来遍历待处理应用的内存映射文件;通过内存映射文件查询待处理应用占用的所有内存页,并通过该资源优先级和限制管理模块222检测每个内存页是否为可回收内存页,对于不可回收内存页设置对应的占用标记,同时记录每个内存页是否还多个应用所占用,从查询出的所有内存页中剔除携带占用标记和/或被多个应用占用的内存页;从剔除后的内存页中获取可回收内存页。
在一个实施例中,如图6所示,提供了另一种内存处理方法,该方法包括:
步骤602,遍历待处理应用的内存映射文件;通过内存映射文件查询待处理应用占用的所有内存页。
在一个实施例中,电子设备可在检测到系统的内存使用率超过预设比例时,或者接收到用户操作而触发的内存回收指令时,触发对内存回收机制,并从所有运行中的应用中确定需要进行内存回收的应用,所确定的应用即为该待处理应用。
在一个实施例中,电子设备可在检测到某一应用从前台切换到后台后,且通过平台冻结管理模块224将该应用设置成进程深度冻结模式后,触发对该应用的内存回收机制。
电子设备可通过上述的资源优先级和限制管理模块222来遍历该待处理应用的内存映射文件,从遍历到的每个内存映射文件中查询被待处理应用占用的内存页,从而可查询出该待处理应用占用的所有内存页。
步骤604,从所有内存页中剔除携带占用标记的内存页;从剔除后的内存页中获取可回收内存页。
针对每个查询出的内存页,可进行二次遍历,二次遍历用于检测每个查询出的内存页是否为可回收内存页,当检测出携带有占用标记的内存页,则判定该内存页为不可回收内存页,并将该内存页进行剔除,经二次遍历后得到的内存页即为可回收内存页,电子设备可从该所有可回收内存页中选取内存页进行回收。通过二次遍历,可提高对可回收内存页检测的全面性。
步骤606,获取与待处理应用对应的回收比例与二次启动时长之间的对应关系;根据回收比例与二次启动时长之间的对应关系确定可回收内存页的回收比例;根据回收比例与可回收内存页的总数量确定回收数量。
其中,二次启动时长是指待处理应用占用的可回收内存页被回收对应的回收比例后,再次启动时所花费的时长。对应关系可为相应的回收比例与二次启动时长之间的对照表,或者回收比例曲线。该曲线为不同的回收比例下对应的二次启动时长,该曲线可为如图4A至4C中所示的曲线。
电子设备可根据该曲线,按照不同的应用类型,确定相对合适的回收比例。将该回收比例以及可回收内存页的总数量相乘,将得到的乘积近似的整数作为该回收数量。
步骤608,根据回收数量从每个可回收内存页的空闲时长中选取第K大的空闲时长,将选取的空闲时长作为时长阈值。
其中,超过第K大的空闲时长的可回收内存页的数量即为该回收数量,该第K大的空闲时长即为时长阈值。不同回收比例所确定的回收数量不同,而不同的回收数量下,对应的K值不同,即时长阈值不同。举例来说,可回收内存页的总数量有100,当回收比例为50%时,则相应的回收数量为50,K=51,时长阈值即为第51大的空闲时长;当回收比例为30.3%时,则相应的回收数量为30,K=31,时长阈值即为第31大的空闲时长。
步骤610,从可回收内存页中选取空闲时长超过时长阈值的内存页进行回收。
电子设备可通过上述的进程内存回收模块234,按照该时长阈值从可回收内存页中进行内存页的回收,释放长时间不使用的内存,提高内存使用效率,且使得回收内存页之后,对该待处理应用造成的影响也较小。
上述的内存处理方法,通过获取待处理应用所占用的可回收内存页及其空闲时长,然后根据该空闲时长来确定时长阈值,并对空闲时长超过时长阈值的内存页进行回收,由于回收的对象是可回收内存页,且并非一定是对所有可回收内存页均进行回收,而是按照与每个可回收内存页的空闲时长,选取空闲时长超过相应的时长阈值的内存页进行回收,进一步降低了对待处理应用的运行影响,且回收的内存页可释放出来供其它应用使用,保证在整个系统内存变大的情况下,对每个应用的负面影响最小,又提高了内存使用效率,保持了对待处理应用内存的回收与运行之间的平衡性。
在一个实施例中,在获取待处理应用所占用的可回收内存页之前,还包括:检测待处理应用是否被前台应用依赖;若是,则将待处理应用的优先级调整至与前台应用相匹配;否则,执行获取待处理应用所占用的可回收内存页。
在一个实施例中,当前台应用结束对待处理应用的依赖时,执行获取待处理应用所占用的可回收内存页。
依赖表示一个应用需要利用于另一个或多个应用的数据才能顺利实现对该一个应用的正常运行的关系。存在依赖关系的两个应用,分别为被依赖的应用和依赖的应用,电子设备将检测出的将被前台应用依赖的后台运行的待处理应用判定为被前台应用依赖的后台应用。电子设备可对检测出的被前台应用所依赖的后台应用设置对应的被依赖标记,并从后台应用池中获取带有被依赖标记的后台应用,将该后台应用判定为被前台应用依赖的后台应用。前台应用即为前台运行的应用。
针对该待处理应用,若被前台应用依赖,则可将将待处理应用判定为被前台应用依赖的应用,将被前台应用依赖的待处理应用的优先级调整至与前台应用的优先级相匹配。
可选地,针对查询出的被前台应用依赖的待处理应用,电子设备可对其优先级进行调整,使得调整后的优先级与该前台应用的优先级相匹配。电子设备可设置不同的被前台应用依赖的待处理应用的优先级与前台优先级的匹配关系。根据该匹配关系,获取对应的适用于被前台应用依赖的待处理应用的优先级,并将被前台应用依赖的待处理应用的优先级调整至该优先级,降低对被前台应用依赖的待处理应用的资源限制程度,使得对被前台应用依赖的待处理应用所能使用的资源的限制程度与前台应用的限制程度相匹配。
在一个实施例中,与该前台应用的优先级相匹配的优先级,可为与该前台应用的优先级相同的优先级。即电子设备可将该被前台应用依赖的待处理应用的优先级调整至与该前台应用的优先级相同的优先级,使得对被前台应用依赖的待处理应用所能使用的资源的限制程度与前台应用的限制程度相同。
通过对待处理应用进行依赖关系检测,将被前台应用所依赖的待处理应用的优先级调整至与前台应用相配的优先级。由于通常前台应用的优先级最高,对应可使用的资源的限制程度最低,而后台进程的优先级较低,以防止后台进程占用过多的资源,对前台应用造成影响。然而后台进程中存在着被前台应用所依赖的情况,被依赖的后台进程执行效率时,也会对前台应用造成影响。本申请实施例通过调整被依赖的待处理应用的优先级调整至与前台优先级相匹配的优先级,从而可降低被依赖的待处理应用所能使用的资源的限制程度,从而提高了被依赖的待处理应用的处理效率。由于该被依赖的待处理应用的处理效率提高了,从而也提高了依赖于该被依赖的待处理应用的前台应用的处理效率。
在一个实施例中,当待处理应用与前台应用之间存在socket通信、binder通信、内存共享或锁等待时,判定后台进程与前台应用之间存在通信机制。
可通过以下任意一种或几种方式检测是否存在与前台应用具有通信机制的后台进程:
(1)检测是否存在与前台应用具有socket和/或binder通信的后台进程;
(2)检测是否存在与前台应用之间进行内存共享的后台进程;
(3)检测是否存在前台应用等待在锁资源上的后台进程。
电子设备可在Binder驱动中设置对前台应用和后台进程之间是否存在Binder通信的检测机制,并调用在Binder驱动中设置的检测机制,以检测出与前台应用存在Binder通信的后台进程,将检测出的后台进程判定为被前台应用依赖的后台进程。
在一个实施例中,电子设备可检测各个锁资源,锁资源包括线程锁,文件句柄,信号等。针对每个锁资源,可检测是否发生锁等待,即锁资源等待。当检测到产生锁等待时,可进一步检测该发生等待的行为是否发生在前台应用上。若是,则遍历等待在该锁资源上面的所有后台进程,将检测到的等待在该锁资源上的后台进程均判定为被前台应用依赖的后台进程。
在一个实施例中,电子设备可在操作系统的内核空间中设置锁资源监控模块和优先级调整模块,将锁资源监控模块内嵌到内核原生的等待接口当中。通过该锁资源监控模块,检测线程锁,文件句柄,信号等锁各种锁资源,是否发生等待,发生等待的行为是否是发生在前台应用上面,如果是发生在前台任务上面,则将检测到的消息发送至优先级调整模块。通过该优先级调整遍历等待在该锁资源上面的所有后台线程,将这些后台进程判定为被前台应用依赖的后台进程。并通过该优先级调整模块将相应的待处理应用的优先级调整至相匹配的优先级。
在一个实施例中,当后台进程与前台应用之间存在同步机制时,判定具有同步机制的待处理应用为被前台应用依赖的后台进程。
电子设备还可通过调用futex系统调用检测后台进程集合中,是否存在与前台应用具有同步机制的后台进程,将具有同步机制的后台进程判定为被前台应用依赖的后台进程。
并发程序设计中,各进程对公共变量的访问必须加以制约,这种制约称为同步。在操作系统中,用户态(user mode)的同步机制可通过调用futex系统调用实现。其中,用户态指非特权状态。同步机制包括信号量、互斥锁等。当通过futex系统调用检测到与前台应用存在任意一种同步机制的后台进程时,可将检测到的后台进程判定为被前台应用依赖的后台进程。
通过对前台应用和后台进程之间的通信机制和/或同步机制的检测,将检测出的与前台应用具有通信机制和/或同步机制的后台进程判定为被前台应用依赖的后台进程,可提高对被前台应用依赖的待处理应用的检测的效率。
应该理解的是,虽然图3、图5和图6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3、图5和图6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种内存处理装置,该装置包括:内存页获取模块702、时长确定模块704以及内存回收模块706。其中,内存页获取模块702用于获取待处理应用所占用的可回收内存页;时长确定模块704用于获取待处理应用对每个可回收内存页的空闲时长;根据每个可回收内存页的空闲时长确定时长阈值;内存回收模块706用于从可回收内存页中选取空闲时长超过时长阈值的内存页进行回收。
在一个实施例中,时长确定模块704还用于获取每个可回收内存页的时间戳记录的更新时间,根据更新时间计算出对应可回收内存页的空闲时长。
在一个实施例中,时长确定模块704还用于获取通过最近最久未使用LRU管理单元记录的每个可回收内存页的更新时间,根据更新时间计算出对应可回收内存页的空闲时长。
在一个实施例中,时长确定模块704还用于根据每个可回收内存页的空闲时长计算出待处理应用对可回收内存页的平均空闲时长,将平均空闲时长作为时长阈值。
在一个实施例中,时长确定模块704还用于获取对可回收内存页的回收数量;根据回收数量从每个可回收内存页的空闲时长中选取第K大的空闲时长,将选取的空闲时长作为时长阈值;超过第K大的空闲时长的数量为回收数量,K为不超过回收数量的自然数。
在一个实施例中,时长确定模块704还用于获取与待处理应用对应的回收比例与二次启动时长之间的对应关系;二次启动时长是指待处理应用占用的可回收内存页被回收对应的回收比例后,再次启动时所花费的时长;根据回收比例与二次启动时长之间的对应关系确定可回收内存页的回收比例;根据回收比例与可回收内存页的总数量确定回收数量。
在一个实施例中,内存页获取模块702还用于遍历待处理应用的内存映射文件;通过内存映射文件查询待处理应用占用的所有内存页;从所有内存页中剔除携带占用标记的内存页;从剔除后的内存页中获取可回收内存页。
在一个实施例中,如图8所示,提供了另一种内存处理装置,该装置还包括:
依赖检测模块708,用于检测待处理应用是否被前台应用依赖。
优先级调整模块710,用于当待处理应用被前台应用依赖时,将待处理应用的优先级调整至与前台应用相匹配。
上述的内存处理装置,通过获取待处理应用所占用的可回收内存页及其空闲时长,然后根据该空闲时长来确定时长阈值,并对空闲时长超过时长阈值的内存页进行回收,由于回收的对象是可回收内存页,且并非一定是对所有可回收内存页均进行回收,而是按照与每个可回收内存页的空闲时长,选取空闲时长超过相应的时长阈值的内存页进行回收,进一步降低了对待处理应用的运行影响,且回收的内存页可释放出来供其它应用使用,保证在整个系统内存变大的情况下,对每个应用的负面影响最小,又提高了内存使用效率,保持了对待处理应用内存的回收与运行之间的平衡性。
上述内存处理装置中各个模块的划分仅用于举例说明,在其他实施例中,可将内存处理装置按照需要划分为不同的模块,以完成上述内存处理装置的全部或部分功能。
关于内存处理装置的具体限定可以参见上文中对于内存处理方法的限定,在此不再赘述。上述内存处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于电子设备中的处理器中,也可以以软件形式存储于电子设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本申请实施例中提供的内存处理装置中的各个模块的实现可为计算机程序的形式。该计算机程序可在终端或服务器等电子设备上运行。该计算机程序构成的程序模块可存储在电子设备的存储器上。该计算机程序被处理器执行时,实现本申请实施例中所描述的内存处理方法的步骤。
在一个实施例中,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述各实施例所提供的内存处理方法的步骤。
在一个实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序对处理器执行时,实现本申请各实施例中所描述的内存处理方法的步骤。
在一个实施例中,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本申请各实施例中所描述的内存处理方法。
本申请实施例还提供了一种计算机设备。如图9所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该计算机设备可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑、穿戴式设备等任意终端设备,以计算机设备为手机为例:
图9为与本申请实施例提供的计算机设备相关的手机的部分结构的框图。参考图9,手机包括:射频(Radio Frequency,RF)电路910、存储器920、输入单元930、显示单元940、传感器950、音频电路960、无线保真(wireless fidelity,WiFi)模块970、处理器980、以及电源990等部件。本领域技术人员可以理解,图9所示的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,RF电路910可用于收发信息或通话过程中,信号的接收和发送,可将基站的下行信息接收后,给处理器980处理;也可以将上行的数据发送给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。此外,RF电路910还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System ofMobile communication,GSM)、通用分组无线服务(General Packet Radio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband CodeDivision Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE))、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器920可用于存储软件程序以及模块,处理器980通过运行存储在存储器920的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器920可主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能的应用程序、图像播放功能的应用程序等)等;数据存储区可存储根据手机的使用所创建的数据(比如音频数据、通讯录等)等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元930可用于接收输入的数字或字符信息,以及产生与手机900的用户设置以及功能控制有关的键信号输入。具体地,输入单元930可包括触控面板931以及其他输入设备932。触控面板931,也可称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板931上或在触控面板931附近的操作),并根据预先设定的程式驱动相应的连接装置。在一个实施例中,触控面板931可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器980,并能接收处理器980发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板931。除了触控面板931,输入单元930还可以包括其他输入设备932。具体地,其他输入设备932可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)等中的一种或多种。
显示单元940可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元940可包括显示面板941。在一个实施例中,可以采用液晶显示器(LiquidCrystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板941。在一个实施例中,触控面板931可覆盖显示面板941,当触控面板931检测到在其上或附近的触摸操作后,传送给处理器980以确定触摸事件的类型,随后处理器980根据触摸事件的类型在显示面板941上提供相应的视觉输出。虽然在图9中,触控面板931与显示面板941是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板931与显示面板941集成而实现手机的输入和输出功能。
手机900还可包括至少一种传感器950,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板941的亮度,接近传感器可在手机移动到耳边时,关闭显示面板941和/或背光。运动传感器可包括加速度传感器,通过加速度传感器可检测各个方向上加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换)、振动识别相关功能(比如计步器、敲击)等;此外,手机还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器等。
音频电路960、扬声器961和传声器962可提供用户与手机之间的音频接口。音频电路960可将接收到的音频数据转换后的电信号,传输到扬声器961,由扬声器961转换为声音信号输出;另一方面,传声器962将收集的声音信号转换为电信号,由音频电路960接收后转换为音频数据,再将音频数据输出处理器980处理后,经RF电路910可以发送给另一手机,或者将音频数据输出至存储器920以便后续处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块970可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了WiFi模块970,但是可以理解的是,其并不属于手机900的必须构成,可以根据需要而省略。
处理器980是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器920内的软件程序和/或模块,以及调用存储在存储器920内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。在一个实施例中,处理器980可包括一个或多个处理单元。在一个实施例中,处理器980可集成应用处理器和调制解调器,其中,应用处理器主要处理操作系统、用户界面和应用程序等;调制解调器主要处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器980中。比如,该处理器980可集成应用处理器和基带处理器,基带处理器与和其它外围芯片等可组成调制解调器。手机900还包括给各个部件供电的电源990(比如电池),优选的,电源可以通过电源管理系统与处理器980逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
在一个实施例中,手机900还可以包括摄像头、蓝牙模块等。
在本申请实施例中,该手机所包括的处理器执行存储在存储器上的计算机程序时实现上述所描述的内存处理方法。
本申请所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。合适的非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM),它用作外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种内存处理方法,其特征在于,包括:
获取待处理应用所占用的可回收内存页;
获取所述待处理应用对每个所述可回收内存页的空闲时长;
根据所述每个所述可回收内存页的空闲时长确定时长阈值;根据所述每个所述可回收内存页的空闲时长确定时长阈值,包括:
获取与所述待处理应用对应的回收比例与二次启动时长之间的对应关系;所述二次启动时长是指所述待处理应用占用的可回收内存页被回收对应的回收比例后,再次启动时所花费的时长;
根据所述回收比例与二次启动时长之间的对应关系确定所述可回收内存页的回收比例;
根据回收比例与可回收内存页的总数量确定回收数量;
根据所述回收数量从所述每个所述可回收内存页的空闲时长中选取第K大的空闲时长,将选取的空闲时长作为时长阈值;超过第K大的空闲时长的数量为所述回收数量,K为不超过回收数量的自然数;
从所述可回收内存页中选取空闲时长超过所述时长阈值的内存页进行回收。
2.根据权利要求1所述的方法,其特征在于,所述获取所述待处理应用对每个所述可回收内存页的空闲时长,包括:
获取每个可回收内存页的时间戳记录的更新时间,根据所述更新时间计算出对应可回收内存页的空闲时长。
3.根据权利要求1所述的方法,其特征在于,所述获取所述待处理应用对每个所述可回收内存页的空闲时长,包括:
获取通过最近最久未使用LRU管理单元记录的每个可回收内存页的更新时间,根据所述更新时间计算出对应可回收内存页的空闲时长。
4.根据权利要求1所述的方法,其特征在于,所述根据所述每个所述可回收内存页的空闲时长确定时长阈值,包括:
根据所述每个所述可回收内存页的空闲时长计算出所述待处理应用对可回收内存页的平均空闲时长,将所述平均空闲时长作为时长阈值。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述获取待处理应用所占用的可回收内存页,包括:
遍历待处理应用的内存映射文件;
通过所述内存映射文件查询所述待处理应用占用的所有内存页;
从所述所有内存页中剔除携带占用标记的内存页;
从剔除后的内存页中获取可回收内存页。
6.根据权利要求1至4中任一项所述的方法,其特征在于,在所述获取待处理应用所占用的可回收内存页之前,还包括:
检测待处理应用是否被前台应用依赖;
若是,则将所述待处理应用的优先级调整至与前台应用相匹配;
否则,执行所述获取待处理应用所占用的可回收内存页。
7.一种内存处理装置,其特征在于,所述装置包括:
内存页获取模块,用于获取待处理应用所占用的可回收内存页;
时长确定模块,用于获取所述待处理应用对每个所述可回收内存页的空闲时长;根据所述每个所述可回收内存页的空闲时长确定时长阈值;根据所述每个所述可回收内存页的空闲时长确定时长阈值,包括:获取与所述待处理应用对应的回收比例与二次启动时长之间的对应关系;所述二次启动时长是指所述待处理应用占用的可回收内存页被回收对应的回收比例后,再次启动时所花费的时长;根据所述回收比例与二次启动时长之间的对应关系确定所述可回收内存页的回收比例;根据回收比例与可回收内存页的总数量确定回收数量;根据所述回收数量从所述每个所述可回收内存页的空闲时长中选取第K大的空闲时长,将选取的空闲时长作为时长阈值;超过第K大的空闲时长的数量为所述回收数量,K为不超过回收数量的自然数;
内存回收模块,用于从所述可回收内存页中选取空闲时长超过所述时长阈值的内存页进行回收。
8.根据权利要求7所述的装置,其特征在于,所述时长确定模块,还用于获取每个可回收内存页的时间戳记录的更新时间,根据所述更新时间计算出对应可回收内存页的空闲时长。
9.一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,其特征在于,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至4中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4中任一项所述方法的步骤。
CN201711489135.9A 2017-12-29 2017-12-29 内存处理方法和装置、电子设备、计算机可读存储介质 Active CN109992402B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201711489135.9A CN109992402B (zh) 2017-12-29 2017-12-29 内存处理方法和装置、电子设备、计算机可读存储介质
US16/138,439 US10698837B2 (en) 2017-12-29 2018-09-21 Memory processing method and device and storage medium
EP18201257.5A EP3506114B1 (en) 2017-12-29 2018-10-18 Memory processing method and device and storage medium
PCT/CN2018/112067 WO2019128431A1 (en) 2017-12-29 2018-10-26 Memory processing method and device and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711489135.9A CN109992402B (zh) 2017-12-29 2017-12-29 内存处理方法和装置、电子设备、计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN109992402A CN109992402A (zh) 2019-07-09
CN109992402B true CN109992402B (zh) 2021-07-09

Family

ID=63914888

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711489135.9A Active CN109992402B (zh) 2017-12-29 2017-12-29 内存处理方法和装置、电子设备、计算机可读存储介质

Country Status (4)

Country Link
US (1) US10698837B2 (zh)
EP (1) EP3506114B1 (zh)
CN (1) CN109992402B (zh)
WO (1) WO2019128431A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110647294B (zh) * 2019-09-09 2022-03-25 Oppo广东移动通信有限公司 存储块回收方法、装置、存储介质及电子设备
CN112835689A (zh) * 2019-11-25 2021-05-25 航天信息股份有限公司 一种控制应用进程的方法及装置
CN110888746B (zh) * 2019-12-10 2023-06-02 Oppo(重庆)智能科技有限公司 内存管理方法、装置、存储介质及电子设备
CN111078587B (zh) * 2019-12-10 2022-05-06 Oppo(重庆)智能科技有限公司 内存分配方法、装置、存储介质及电子设备
CN111949564B (zh) * 2020-08-13 2024-05-17 Vidaa(荷兰)国际控股有限公司 一种内存交换方法及显示设备
CN114253872B (zh) * 2022-02-28 2022-07-12 荣耀终端有限公司 电子设备及其内存回收方法、介质
CN116107925B (zh) * 2023-04-10 2023-09-26 阿里云计算有限公司 数据存储单元处理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810109A (zh) * 2012-11-15 2014-05-21 华为技术有限公司 内存分配方法、装置及系统
CN104008061A (zh) * 2013-02-22 2014-08-27 华为技术有限公司 内存回收方法及装置
CN105701025A (zh) * 2015-12-31 2016-06-22 华为技术有限公司 一种内存回收方法及装置
CN106155777A (zh) * 2016-06-30 2016-11-23 宇龙计算机通信科技(深圳)有限公司 一种后台应用管理装置、终端及后台应用管理方法
CN106331148A (zh) * 2016-09-14 2017-01-11 郑州云海信息技术有限公司 一种客户端数据读取时的缓存管理方法及其装置

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592432A (en) 1995-09-05 1997-01-07 Emc Corp Cache management system using time stamping for replacement queue
EP0919927A3 (en) 1997-11-26 2000-05-24 Compaq Computer Corporation Dynamic memory allocation technique for maintaining an even distribution of cache page addresses within an address space
JP4036992B2 (ja) * 1998-12-17 2008-01-23 富士通株式会社 キャッシュモジュール間でデータを動的に管理するキャッシュ制御装置および方法
US7433951B1 (en) * 2000-09-22 2008-10-07 Vmware, Inc. System and method for controlling resource revocation in a multi-guest computer system
US6516380B2 (en) * 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US7552303B2 (en) * 2004-12-14 2009-06-23 International Business Machines Corporation Memory pacing
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
CN1996258A (zh) * 2006-12-28 2007-07-11 武汉虹旭信息技术有限责任公司 一种动态内存池的实现方法
US8214609B2 (en) * 2008-07-16 2012-07-03 International Business Machines Corporation Data transference to virtual memory
CN101808141B (zh) * 2010-04-19 2011-09-21 浙江大学 一种基于虚拟化平台的宿主客户机协同换页的方法
CN101833512A (zh) 2010-04-22 2010-09-15 中兴通讯股份有限公司 一种内存回收方法及其装置
CN102467403B (zh) * 2011-10-14 2015-06-10 海尔集团技术研发中心 一种基于进程迁出/迁入的软件快速切换方法及装置
US9032168B2 (en) * 2012-05-31 2015-05-12 Htc Corporation Memory management methods and systems for mobile devices
WO2014014944A2 (en) * 2012-07-16 2014-01-23 Sony Corporation Managing multi-threaded operations in a multimedia authoring environment
US9747028B1 (en) * 2013-12-13 2017-08-29 Amazon Technologies, Inc. Artificial memory pressure for low memory machine
US9542336B2 (en) * 2013-12-18 2017-01-10 Intel Corporation Isochronous agent data pinning in a multi-level memory system
CN103823714B (zh) * 2014-01-15 2017-05-24 浙江大学 一种基于虚拟化下NUMA节点内存QoS的调节方法及装置
US9904623B2 (en) * 2015-05-01 2018-02-27 Advanced Micro Devices, Inc. Early cache prefetching in preparation for exit from idle mode
US20170123700A1 (en) * 2015-11-03 2017-05-04 Samsung Electronics Co., Ltd. Io redirection methods with cost estimation
CN105760225B (zh) 2016-01-27 2019-05-10 浪潮(北京)电子信息产业有限公司 一种内存回收方法与系统
US9747222B1 (en) 2016-03-31 2017-08-29 EMC IP Holding Company LLC Dynamic ingestion throttling of data log
CN106250223B (zh) 2016-07-28 2020-01-10 宇龙计算机通信科技(深圳)有限公司 一种后台进程管理方法及终端设备
CN109213539B (zh) * 2016-09-27 2021-10-26 华为技术有限公司 一种内存回收方法及装置
CN106843756B (zh) * 2017-01-13 2019-12-31 中国科学院信息工程研究所 基于页面分类的内存页面回收方法及系统
CN109992393A (zh) * 2017-12-29 2019-07-09 广东欧珀移动通信有限公司 应用处理方法和装置、电子设备、计算机可读存储介质
US10977172B2 (en) * 2018-06-03 2021-04-13 Apple Inc. Memory page reclamation in a user idle mode

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810109A (zh) * 2012-11-15 2014-05-21 华为技术有限公司 内存分配方法、装置及系统
CN104008061A (zh) * 2013-02-22 2014-08-27 华为技术有限公司 内存回收方法及装置
CN105701025A (zh) * 2015-12-31 2016-06-22 华为技术有限公司 一种内存回收方法及装置
CN106155777A (zh) * 2016-06-30 2016-11-23 宇龙计算机通信科技(深圳)有限公司 一种后台应用管理装置、终端及后台应用管理方法
CN106331148A (zh) * 2016-09-14 2017-01-11 郑州云海信息技术有限公司 一种客户端数据读取时的缓存管理方法及其装置

Also Published As

Publication number Publication date
CN109992402A (zh) 2019-07-09
US10698837B2 (en) 2020-06-30
EP3506114B1 (en) 2020-06-17
US20190205265A1 (en) 2019-07-04
WO2019128431A1 (en) 2019-07-04
EP3506114A1 (en) 2019-07-03

Similar Documents

Publication Publication Date Title
CN109992402B (zh) 内存处理方法和装置、电子设备、计算机可读存储介质
CN109992523B (zh) 内存处理方法和装置、电子设备、计算机可读存储介质
CN110018900B (zh) 内存处理方法和装置、电子设备、计算机可读存储介质
CN110018902B (zh) 内存处理方法和装置、电子设备、计算机可读存储介质
US11099900B2 (en) Memory reclamation method and apparatus
US11144477B2 (en) Method for processing reclaimable memory pages, electronic device, and computer-readable storage medium
EP3388946B1 (en) Memory collection method and device
CN107526640B (zh) 资源管理方法、装置、移动终端及计算机可读存储介质
CN110377527B (zh) 一种内存管理的方法以及相关设备
CN110018901B (zh) 内存回收方法、装置、计算机设备和计算机可读存储介质
CN111274039B (zh) 内存回收方法、装置、存储介质及电子设备
WO2019076381A1 (zh) 终端内存回收处理方法及装置
WO2019128542A1 (zh) 应用处理方法、电子设备、计算机可读存储介质
CN110018885B (zh) 应用程序冻结方法、装置、存储介质和终端
CN110018886B (zh) 应用状态切换方法和装置、电子设备、可读存储介质
CN110046031B (zh) 应用处理方法和装置、电子设备、计算机可读存储介质
CN110007968B (zh) 信息处理方法、装置、计算机设备和计算机可读存储介质
CN109992394B (zh) 进程处理方法和装置、电子设备、计算机可读存储介质
CN110032398B (zh) 应用处理方法和装置、电子设备、计算机可读存储介质
CN117130947A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40006302

Country of ref document: HK

CB02 Change of applicant information

Address after: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Applicant after: OPPO Guangdong Mobile Communications Co.,Ltd.

Address before: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Applicant before: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant