CN108563506A - 移动终端的内存回收方法及装置 - Google Patents
移动终端的内存回收方法及装置 Download PDFInfo
- Publication number
- CN108563506A CN108563506A CN201810320352.3A CN201810320352A CN108563506A CN 108563506 A CN108563506 A CN 108563506A CN 201810320352 A CN201810320352 A CN 201810320352A CN 108563506 A CN108563506 A CN 108563506A
- Authority
- CN
- China
- Prior art keywords
- internal storage
- storage location
- mobile terminal
- memory
- load
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种移动终端的内存回收方法及装置,属于信息技术领域。所述方法包括:在检测到内存回收指令时,在系统缓存中确定待回收的内存单元,所述内存单元为内存页或者内存块;确定所述内存单元的回收成本,所述回收成本与占用所述内存单元的资源的加载时间和使用频率中的至少一种正相关;对回收成本小于成本阈值的内存单元进行回收。本发明提供的移动终端的内存回收方法可以有效增加系统空闲内存的大小,降低移动终端出现卡顿现象的概率。
Description
技术领域
本发明涉及信息技术领域,特别涉及一种移动终端的内存回收方法及装置。
背景技术
随着科技的快速发展,各种不同功能的应用程序层出不穷。但是,若移动终端中安装的应用程序过多,移动终端运行应用程序时可能会出现卡顿的现象。
相关技术中,移动终端中一般配置有内存清理功能,当用户通过指定的操作触发该内存清理功能时,移动终端可以关闭后台运行的部分应用程序(也称为杀进程),从而可以释放系统内存中的部分缓存,缓解卡顿现象。
但是,由于杀进程只能释放部分缓存,系统内存中实际空闲内存的大小并未增加,因此随着移动终端运行时间的增长,依旧会出现卡顿现象。
发明内容
本发明提供了一种移动终端的内存回收方法及装置,可以解决相关技术中的内存回收方法仅能释放部分缓存,无法有效缓解移动终端卡顿现象的问题。技术方案如下:
第一方面,提供了一种移动终端的内存回收方法,所述方法包括:
在检测到内存回收指令时,在系统缓存中确定待回收的内存单元,所述内存单元为内存页或者内存块;
确定所述内存单元的回收成本,所述回收成本与占用所述内存单元的资源的加载时间和使用频率中的至少一种正相关;
对回收成本小于成本阈值的内存单元进行回收。
可选的,所述内存单元为内存页,所述在系统缓存中确定待回收的内存单元,包括:
将使用频率小于频率阈值的资源在所述系统缓存中所占用的内存页确定为待回收的内存页;
其中,所述内存页的回收成本与占用所述内存页的资源的加载时间正相关。
可选的,所述内存单元为内存块,所述在系统缓存中确定待回收的内存单元,包括:
将所述系统缓存中的内存块均确定为待回收的内存块;
其中,所述内存块的回收成本与占用所述内存块的资源的使用频率正相关。
可选的,占用所述内存单元的资源的加载时间与所述资源的大小正相关,并且与所述移动终端中存储介质的类型相关。
可选的,所述在检测到内存回收指令时,在系统缓存中确定待回收的内存单元,包括:
在检测到所述内存回收指令时,检测预设时间段内的系统负载是否大于负载阈值;
当所述预设时间段内的系统负载小于或等于所述负载阈值时,在所述系统缓存中确定待回收的内存单元。
可选的,在所述检测预设时间段内的系统负载是否大于负载阈值之后,所述方法还包括:
当所述预设时间段内的系统负载大于负载阈值时,延迟第一时间段之后,再次检测预设时间段内的系统负载是否大于所述负载阈值,直至检测到所述系统负载小于或等于所述负载阈值时,在所述系统缓存中确定待回收的内存单元。
可选的,若在检测到所述系统负载小于或等于所述负载阈值之前,所述移动终端的操作系统休眠,所述方法还包括:
设定休眠时长;
若在所述休眠时长内,检测到所述操作系统被唤醒,则延迟第一时间段之后,再次检测预设时间段内的系统负载是否大于所述负载阈值;
若在所述休眠时长内,未检测到所述操作系统被唤醒,则在所述休眠时长后,唤醒所述操作系统,并在所述系统缓存中确定待回收的内存单元。
可选的,所述在检测到所述内存回收指令时,检测预设时间段内的系统负载是否大于负载阈值,包括:
在检测到所述内存回收指令时,检测上一次执行的内存回收任务是否完成;
当检测到上一次执行的内存回收任务已完成时,检测预设时间段内的系统负载是否大于负载阈值。
第二方面,提供了一种移动终端的内存回收装置,所述装置包括:
第一确定模块,用于在检测到内存回收指令时,在系统缓存中确定待回收的内存单元,所述内存单元为内存页或者内存块;
第二确定模块,用于确定所述内存单元的回收成本,所述回收成本与占用所述内存单元的资源的加载时间和使用频率中的至少一种正相关;
回收模块,用于对回收成本小于成本阈值的内存单元进行回收。
可选的,所述内存单元为内存页,所述第一确定模块,用于:
将使用频率小于频率阈值的资源在所述系统缓存中所占用的内存页确定为待回收的内存页;
其中,所述内存页的回收成本与占用所述内存页的资源的加载时间正相关。
可选的,所述内存单元为内存块,所述第一确定模块,用于:
将所述系统缓存中的内存块均确定为待回收的内存块;
其中,所述内存块的回收成本与占用所述内存块的资源的使用频率正相关。
可选的,占用所述内存单元的资源的加载时间与所述资源的大小正相关,并且与所述移动终端中存储介质的类型相关。
可选的,所述第一确定模块,包括:
检测子模块,用于在检测到所述内存回收指令时,检测预设时间段内的系统负载是否大于负载阈值;
确定子模块,用于当所述预设时间段内的系统负载小于或等于所述于负载阈值时,在所述系统缓存中确定待回收的内存单元。
可选的,所述第一确定模块,还包括:
设定子模块,用于:若在检测到所述系统负载小于或等于所述负载阈值之前,所述移动终端的操作系统休眠,设定休眠时长;
所述检测子模块,还用于:若在所述休眠时长内,检测到所述操作系统被唤醒,则延迟第一时间段之后,再次检测预设时间段内的系统负载是否大于所述负载阈值;
所述确定子模块,还用于:若在所述休眠时长内,未检测到所述操作系统被唤醒,则在所述休眠时长后,唤醒所述操作系统,并在所述系统缓存中确定待回收的内存单元。
第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述计算机可读存储介质在计算机上运行时,使得计算机执行如第一方面所提供的移动终端的内存回收方法。
本发明提供的技术方案带来的有益效果是:
本发明实施例提供了一种移动终端的内存回收方法及装置,可以在检测到内存回收指令时,从系统缓存中确定待回收的内存单元,确定内存单元的回收成本,并可以对回收成本小于成本阈值的内存单元均进行回收,由此有效增加了系统空闲内存的大小,进而可以降低移动终端出现卡顿现象的概率。并且,由于移动终端仅对回收成本小于成本阈值的内存单元进行回收,可以降低该内存回收方法对移动终端性能的影响。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本发明实施例提供的一种移动终端的内存回收方法的流程图;
图1B是本发明实施例提供的另一种移动终端的内存回收方法的流程图;
图1C是本发明实施例提供的又一种移动终端的内存回收方法的流程图;
图2是本发明实施例提供的再一种移动终端的内存回收方法的流程图;
图3是本发明实施例提供的一种系统内存的调用框图;
图4是本发明实施例提供的一种移动终端的内存回收装置的结构示意图;
图5是本发明实施例提供的一种第一确定模块的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1A是本发明实施例提供的一种移动终端的内存回收方法的流程图,该方法可以应用于移动终端中,参考图1A,该方法可以包括:
步骤101、在检测到内存回收指令时,在系统缓存中确定待回收的内存单元。
其中,该内存单元可以为内存页(Page)或者内存块,该内存块是移动终端为内核分配较小内存时使用的内存分配单位,例如Linux操作系统中的slab内存分配机制所使用的内存分配单位。
该内存回收指令可以由用户通过指定操作触发,或者,也可以由移动终端在检测到系统内存中空闲内存不足时自动触发。
步骤102、确定内存单元的回收成本,该回收成本与占用该内存单元的资源的加载时间和使用频率中的至少一种正相关。
在本发明实施例中,回收成本与占用该内存单元的资源的加载时间和使用频率中的至少一种正相关是指:占用某个内存单元的资源的加载时间越长,和/或,占用该内存单元的资源的使用频率越高,该内存单元的回收成本也就越高。
步骤103、对回收成本小于成本阈值的内存单元进行回收。
其中,该成本阈值可以为移动终端预先设定的固定值。根据移动终端操作系统类型的不同,移动终端可以采用不同的内存回收策略回收成本小于成本阈值的内存单元。例如,可以将该回收成本小于成本阈值的内存单元从缓存链表中删除,从而实现对该内存单元的回收,该回收的内存单元可以成为系统实际可用的空闲内存。
综上所述,本发明实施例提供了一种移动终端的内存回收方法,该方法可以在检测到内存回收指令时,从系统缓存中确定待回收的内存单元,确定内存单元的回收成本,并可以对回收成本小于成本阈值的内存单元均进行回收,由此有效增加了系统空闲内存的大小,进而可以降低移动终端出现卡顿现象的概率。并且,由于移动终端仅对回收成本小于成本阈值的内存单元进行回收,可以降低该内存回收方法对移动终端性能的影响。
图1B是本发明实施例提供的另一种移动终端的内存回收方法的流程图,以移动终端回收的内存单元为内存页为例,参考图1B,该内存回收方法可以包括:
步骤101a、在检测到内存回收指令时,将使用频率小于频率阈值的资源在系统缓存中所占用的内存页确定为待回收的内存页。
步骤102a、确定该内存页的回收成本,该内存页的回收成本与占用该内存页的资源的加载时间正相关。
步骤103a、对回收成本小于成本阈值的内存页进行回收。
图1C是本发明实施例提供的又一种移动终端的内存回收方法的流程图,以移动终端回收的内存单元为内存块为例,参考图1C,该内存回收方法可以包括:
步骤101b、在检测到内存回收指令时,将系统缓存中的内存块均确定为待回收的内存块。
步骤102b、确定该内存块的回收成本,该内存块的回收成本与占用该内存块的资源的使用频率正相关。
步骤103b、对回收成本小于成本阈值的内存块进行回收。
需要说明的是,在本发明实施例中,当系统缓存中即包括内存页也包括内存块时,上述步骤101a与步骤101b可以同步执行,相应的,步骤102a与步骤102b可以同步执行,步骤103a与步骤103b也可以同步执行。
图2是本发明实施例提供的再一种移动终端的内存回收方法的流程图,该方法可以应用于移动终端中,参考图2,该方法可以包括:
步骤201、在检测到内存回收指令时,检测上一次执行的内存回收任务是否完成。
当检测到上一次执行的内存回收任务已完成时,移动终端可以执行步骤202;当检测到上一次执行的内存回收任务未完成时,移动终端可以继续执行上一次的内存回收任务,并结束当前操作。
其中,该内存回收指令可以由用户通过指定操作触发,例如移动终端显示界面中可以显示有内存回收图标,当用户通过点击操作点击该内存回收图标时,移动终端可以检测到该内存回收指令。或者,该内存回收指令也可以由移动终端在检测到系统内存中空闲内存不足时,触发该内存回收指令。
在本发明实施例中,如图3所示,移动终端的系统内存可以分为正在使用的内存(ALLOC)、缓存(CACHE)以及空闲内存(FREE),其中,缓存和空闲内存为系统中的可用内存。
当用户通过指定的操作触发移动终端的内存清理功能时,移动终端可以通过杀进程的方式对正在使用的内存进行回收,使其变成可用内存,实际上主要放到缓存中,即图3中步骤01所示。
当移动终端启动新的应用程序(例如网页、音视频流或者文件等)时,该应用程序需要向操作系统申请内存,若该申请的内存存在于缓存中,则可以直接从缓存中获取,即图3中步骤02所示,该获取内存的速度较快。
若该申请内存不存在于缓存中,则需要从空闲内存中获取。若该空闲内存不足,则移动终端需要从缓存中回收内存,即图3中步骤03所示。例如,假设移动终端的操作系统为Linux系统,则移动终端可以通过调用慢速路径(slowpath)函数从缓存中回收内存,该内存回收的速度较慢。当移动终端完成内存回收后,应用程序即可从该空闲内存中获取所需的内侧,即图3中步骤04所示。
当移动终端中的空闲内存不足时,移动终端需要等待步骤03完成之后再执行步骤04,由于大多数操作系统在设计时需要优先保证缓存的大小,所以即使发生步骤03所示的内存回收操作,也只会从缓存中回收本次需要的内存。进一步的,移动终端为应用程序分配空闲内存后,剩余的空闲内存实际还是不足的。当移动终端再次启动新的应用程序时,很有可能还需要再次执行上述步骤03以及步骤04所示的操作,导致移动终端系统性能持续较差。
为了改善移动终端的性能,在本发明实施例中,移动终端可以在检测到由空闲内存不足而触发的缓存回收操作(例如检测到slowpath函数被调用)时,生成该内存回收指令,并执行内存回收任务。在执行该内存回收任务时,移动终端需要先检测上一次执行的内存回收任务是否完成,若上一次的内存回收任务已完成,则可以继续执行步骤202。
示例的,移动终端中可以创建一个新的内存回收进程,该内存回收进程主要用于实现全局内存回收的功能,移动终端开机过程中,该内存回收进程进行初始化。初始化完成后即可等待触发信号。当移动终端检测到内存回收指令时,可以生成触发信号唤醒该内存回收进程,该内存回收进程即可开始执行内存回收任务。
步骤202、检测预设时间段内的系统负载是否大于负载阈值。
该预设时间段是指在当前时刻之前的预设时间段。当移动终端检测到在该预设时间段内的系统负载大于负载阈值时,可以执行步骤203;当移动终端检测到在该预设时间段内的系统负载小于或等于负载阈值时,可以执行步骤204。
在本发明实施例中,该预设时间段内的系统负载可以是指该预设时间段内的系统负载的平均值。可选的,该系统负载可以根据移动终端的中央处理器(CentralProcessingUnit,CPU)的进程数进行衡量,且该系统负载与该进程数正相关。
此外,该预设时间段以及该负载阈值均可以为预先设定的固定值,或者可以根据实际情况进行灵活设置,本发明实施例对此不做限定。
示例的,假设该预设时间段为1分钟,该负载阈值为进程数50,则当移动终端开始执行回收任务时,可以检测前1分钟内CPU的进程数的平均值,若该平均值为100,则由于系统负载大于负载阈值,因此移动终端可以执行步骤203;若该平均值为40,则由于系统负载小于负载阈值,因此移动终端可以执行步骤204。
需要说明的是,在本发明实施例中,该系统负载除了可以根据CPU的进程数进行衡量,还可以根据CPU的使用率等参数进行衡量,本发明实施例对此不做限定。
步骤203、延迟第一时间段之后,再次执行步骤202。
该第一时间段可以为移动终端中预先设定的固定值,也可以根据实际情况进行灵活调整。
当移动终端检测到在该预设时间段内的系统负载大于负载阈值时,移动终端可以确定系统负载过高,当前执行内存回收任务会对移动终端的系统性能造成较大影响,因此移动终端可以延迟第一时间段之后,再次检测在当前时刻之前的预设时间段内的系统负载是否大于负载阈值,即再次执行步骤202。移动终端可以重复上述步骤202和步骤203,直至检测到该预设时间段内的系统负载小于或等于负载阈值(通常情况下,移动终端的系统负载不会长时间持续大于负载阈值,除非移动终端持续运行大型游戏,或者在进行拷机测试)。
示例的,假设该第一时间段为30秒,则当移动终端在上述步骤202中检测到系统负载大于负载阈值时,可以等待30秒之后,再次检测前1分钟内的系统负载是否大于负载阈值;若移动终端检测到的系统负载依旧大于负载阈值,则可以等待30秒后再次进行检测。
步骤204、在该系统缓存中确定待回收的内存单元。
当移动终端检测到预设时间段的系统负载小于或等于负载阈值时,可以确定当前系统负载较低,能够执行内存回收任务,因此可以先在系统缓存中确定至少一个待回收的内存单元,该内存单元可以是指内存页或者内存块。
其中,内存页为移动终端为资源(即内存客户,也称为客户程序,一般可以包括应用程序和部分内核子系统)分配内存时使用的内存分配单位。每个内存页的大小一般是4千字节(kB),每个客户程序通常需要占用多个内存页,例如每个客户程序占用的多个内存页的总大小一般为32K,128K或者4兆字节(MB);内存块为移动终端为内核分配较小内存时使用的内存分配单位(例如Linux操作系统中的slab内存分配机制所使用的内存分配单位),每个内存块的大小一般为几个字节到4K。
作为一种可选的实现方式,移动终端可以分别确定每一份资源的使用频率,然后可以将使用频率小于频率阈值的资源在系统缓存中所占用的内存页确定为待回收的内存页;并且,移动终端可以将缓存中的内存块均确定为待回收的内存块。
示例的,假设移动终端的操作系统为Linux系统,则移动终端可以调用内存收缩(shrinkzone)函数,通过最近最少使用(LeastRecentlyUsed,LRU)算法扫描系统缓存(该系统缓存可以包括系统内存中的所有缓存域)中每个内存页的使用频率(该使用频率也即是占用该内存页的资源的使用频率),并可以将使用频率小于频率阈值的内存页确定为待回收的内存页。而对于系统缓存中的内存块,则可以均确定为待回收的内存块。
作为另一种可选的实现方式,移动终端可以将使用频率小于频率阈值的资源在系统缓存中所占用的内存页确定为待回收的内存页,并可以将使用频率小于频率阈值的资源在系统缓存中所占用的内存块确定为待回收的内存块。也即是,移动终端可以将系统缓存中使用频率较低的内存单元均确定为待回收的内存单元。
作为再一种可选的实现方式,移动终端还可以将系统缓存中的内存单元均确定为待回收的内存单元。
步骤205、确定内存单元的回收成本。
该回收成本与占用该内存单元的资源的加载时间和使用频率中的至少一种正相关。即占用某个内存单元的资源的加载时间越长,和/或,占用某个内存单元的资源的使用频率越高,该内存单元的回收成本也就越高。
可选的,若待回收的内存单元为根据资源的使用频率所确定的内存页,则移动终端可以根据占用该内存页的资源的加载时间确定其回收成本,该回收成本与加载时间正相关;若待回收的内存单元为系统缓存中的所有内存页,则对于每个内存页,移动终端可以根据占用该内存页的资源的加载时间,以及占用该内存页的资源的使用频率确定其回收成本,该回收成本与加载时间正相关,且与使用频率正相关;若待回收的内存单元为内核需频繁使用的小块的内存块,则移动终端可以根据占用该内存块的资源的使用频率确定回收成本,该回收成本与使用频率正相关。
其中,占用内存单元的资源的加载时间与该资源的大小正相关,即某个资源越大,该资源的加载时间越长,该资源所占用的内单元的回收成本也就越高。在本发明实施例中,移动终端可以根据资源所占用的内存单元的大小(例如在Linux操作系统中,可直接使用pageorder参数确定资源所占用的内存单元的大小),确定该资源的大小,进而可以根据预先存储的资源大小与加载时间的对应关系,确定该资源的加载时间。
占用内存单元的资源的加载时间还与移动终端中存储介质的类型相关,并且,存储介质的性能越好,资源的加载时间越短。目前,移动终端中存储介质的类型一般包括嵌入式的多媒体存储卡(embeddedMultiMediaCard,eMMC)和通用闪存存储(UniversalFlashStorage,UFS)。其中,eMMC读取速度比UFS慢很多,对于采用eMMC的移动终端,资源的加载时间要远高于采用UFS的移动终端,因此采用eMMC的移动终端中的内存单元的回收成本通常较高。
对于同一移动终端中的各个内存单元,在确定占用某个内存单元的资源的加载时间时,可以仅考虑该资源的大小。
需要说明的是,在本发明实施例中,移动终端在确定内存块的回收成本时,也可以考虑占用该内存块的资源的加载时间,且该回收成本与加载时间正相关。
步骤206、对回收成本小于成本阈值的内存单元进行回收。
其中,该成本阈值可以为移动终端预先设定的固定值,或者也可以根据实际情况灵活调整,本发明实施例对此不做限定。此外,由于移动终端在确定内存页和内存块的回收成本时可以基于不同的参数进行计算,因此移动终端也可以为内存页和内存块分别设置对应的成本阈值。例如内存页对应第一成本阈值,内存块对应第二成本阈值。相应的,移动终端可以分别对回收成本小于第一成本阈值的内存页,以及回收成本小于第二成本阈值的内存块进行回收。
进一步的,根据操作系统类型的不同,移动终端可以采用不同的内存回收策略回收成本小于成本阈值的内存单元。例如,可以将该回收成本小于成本阈值的内存单元从缓存链表中删除,并添加到空闲内存链表,从而实现对该内存单元的回收,该回收的内存单元可以成为系统实际可用的空闲内存。由于在本发明实施例中,移动终端可以对回收成本小于成本阈值的内存单元均进行回收,相比于相关技术中仅回收本次所需的内存,本发明实施例提供的回收方法可以一次回收较多的空闲内存,进而可以有效降低移动终端频繁触发内存回收操作的概率。
需要说明的是,移动终端在执行内存回收任务时,应当避免使用直接丢弃缓存(dropcache)方法,该方法可以将全部缓存均转换为空闲内存,虽然可以回收得到大量空闲内存,当会严重影响系统性能。
还需要说明的是,在本发明实施例中,移动终端在确定内存单元的回收成本之前,还可以先检测每个内存页是否为匿名(ANON)内存页,对于匿名内存页,由于占用该匿名内存页的资源的加载时间通常较短(不需要读存储器),因此移动终端可以直接回收该匿名内存页,而无需再计算该匿名内存页的回收成本。
其中,匿名内存页是指移动终端中动态生成的内容所占用的内存页,该匿名内存页在文件系统里没有相对应的磁盘路径。例如堆(heap)和栈空间(stack)中的内容所占用的内存页均属于匿名内存页。
可选的,移动终端在循环执行上述步骤202和步骤203的过程中,若在检测到系统负载小于或等于该负载阈值之前,检测到移动终端的操作系统休眠时,则如图2所示,该方法还可以包括:
步骤207、移动终端的操作系统休眠时,设定休眠时长。
该休眠时长可以为预设的固定值,也可以根据实际情况进行灵活调整,本发明实施例对此不做限定。
示例的,假设移动终端在上述步骤203执行的过程中,即等待该第一时间段的过程中,检测到移动终端的操作系统休眠(例如用户通过按压电源键休眠该操作系统)时,移动终端可以设定休眠时长为5分钟。
步骤208、检测在该休眠时长内,移动终端的操作系统是否被唤醒。
若在该休眠时长内,未检测到该操作系统被唤醒,执行步骤209;若在该休眠时长内,检测到该操作系统由于其他原因被唤醒(例如闹钟定时唤醒或者用户按压电源键唤醒等)时,可以执行步骤203,即移动终端可以等待第一时间段之后,再次执行步骤202,直至检测到该预设时间段内的系统负载小于或等于该负载阈值。也即是,移动终端可以在等待第一时间段之后,通过上述步骤202至步骤206所示的方法继续执行该内存回收任务。
由于移动终端操作系统休眠后再次被唤醒时,用户可能需要触发移动终端启动新的应用程序,系统资源较为敏感,因此为了保证系统性能,避免影响用户体验,移动终端可以等待第一时间段之后,再执行步骤202。
步骤209、在该休眠时长后,唤醒该操作系统,并执行步骤204。
若移动终端的操作系统在该休眠时长内未被唤醒,则移动终端可以在该休眠时长后,主动唤醒该操作系统,并执行步骤204。相应的,移动终端后续可以继续执行步骤205和步骤206,从而完成该内存回收任务。
示例的,假设移动终端的操作系统在休眠的5分钟之内未被唤醒,则移动终端可以在休眠5分钟之后,自动唤醒操作系统,并通过上述步骤204至步骤206所示的方法,完成内存回收任务。
需要说明的是,本发明实施例提供的内存回收方法的步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减。例如,步骤207至步骤209可以根据情况删除,即移动终端可以在检测到操作系统休眠时,结束该内存回收任务;或者,步骤202和步骤203,以及步骤207至步骤209均可以根据情况删除。任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。
综上所述,本发明实施例提供了一种移动终端的内存回收方法,该方法可以在检测到内存回收指令时,从系统缓存中确定待回收的内存单元,确定内存单元的回收成本,并可以对回收成本小于成本阈值的内存单元均进行回收,由此有效增加了系统空闲内存的大小,进而可以降低移动终端出现卡顿现象的概率。并且,由于移动终端仅对回收成本小于成本阈值的内存单元进行回收,可以降低该内存回收方法对移动终端性能的影响。
图4是本发明实施例提供的一种移动终端的内存回收装置的结构示意图,该装置可以配置于移动终端中,参考图4,该装置可以包括:
第一确定模块301,用于在检测到内存回收指令时,在系统缓存中确定待回收的内存单元,该内存单元为内存页或者内存块。
第二确定模块302,用于确定内存单元的回收成本,该回收成本与占用内存单元的资源的加载时间和使用频率中的至少一种正相关。
回收模块303,用于对回收成本小于成本阈值的内存单元进行回收。
综上所述,本发明实施例提供了一种移动终端的内存回收装置,该装置可以在检测到内存回收指令时,从系统缓存中确定待回收的内存单元,确定内存单元的回收成本,并可以对回收成本小于成本阈值的内存单元均进行回收,由此有效增加了系统空闲内存的大小,进而可以降低移动终端出现卡顿现象的概率。并且,由于移动终端仅对回收成本小于成本阈值的内存单元进行回收,可以降低该内存回收过程对移动终端性能的影响。
可选的,该内存单元为内存页,该第一确定模块301可以用于:
将使用频率小于频率阈值的资源在系统缓存中所占用的内存页确定为待回收的内存页。
其中,内存页的回收成本与占用该内存页的资源的加载时间正相关。
可选的,该内存单元为内存块,该第一确定模块301可以用于:
将系统缓存中的内存块均确定为待回收的内存块。
其中,内存块的回收成本与使用频率正相关。
可选的,占用内存单元的资源的加载时间与资源的大小正相关,并且与移动终端中存储介质的类型相关。
可选的,图5是本发明实施例提供的一种第一确定模块的结构示意图,如图5所示,该第一确定模块301可以包括:
检测子模块3011,用于在检测到该内存回收指令时,检测预设时间段内的系统负载是否大于负载阈值。
确定子模块3012,用于当该预设时间段内的系统负载小于或等于负载阈值时,在该系统缓存中确定待回收的内存单元。
进一步的,该检测子模块3011还可以用于:
当该预设时间段内的系统负载大于负载阈值时,延迟第一时间段之后,再次检测在当前时刻之前的预设时间段内的系统负载是否大于该负载阈值,直至检测到该系统负载小于或等于该负载阈值时,确定子模块3012在该系统缓存中确定待回收的内存单元。
可选的,参考图5,该第一确定模块301还可以包括:
设定子模块3013,用于:若在检测到该系统负载小于或等于该负载阈值之前,移动终端的操作系统休眠时,设定休眠时长。
相应的,该检测子模块3011,还可以用于当在该休眠时长内,检测到该操作系统被唤醒时,延迟该第一时间段之后,再次检测在当前时刻之前的预设时间段内的系统负载是否大于该负载阈值。
该确定子模块3012,还可以用于当在该休眠时长内,未检测到该操作系统被唤醒时,在该休眠时长后,唤醒该操作系统,并在该系统缓存中确定待回收的内存单元。
可选的,该第一确定模块301可以用于:
在检测到该内存回收指令时,检测上一次执行的内存回收任务是否完成;
当检测到上一次执行的内存回收任务已完成时,检测预设时间段内的系统负载是否大于负载阈值。
综上所述,本发明实施例提供了一种移动终端的内存回收装置,该装置可以在检测到内存回收指令时,从系统缓存中确定待回收的内存单元,确定内存单元的回收成本,并可以对回收成本小于成本阈值的内存单元均进行回收,由此有效增加了系统空闲内存的大小,进而可以降低移动终端出现卡顿现象的概率。并且,由于移动终端仅对回收成本小于成本阈值的内存单元进行回收,可以降低该内存回收过程对移动终端性能的影响。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置、模块和子模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
需要说明的是,本发明实施例中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该计算机可读存储介质在计算机上运行时,使得计算机执行如上述方法实施例所示的移动终端的内存回收方法。
本发明实施例提供了一种移动终端,该移动终端可以包括:存储器,处理器及存储在该存储器上并可在该处理器上运行的计算机程序,处理器执行该计算机程序时可以实现如上述方法实施例所示的移动终端的内存回收方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种移动终端的内存回收方法,其特征在于,所述方法包括:
在检测到内存回收指令时,在系统缓存中确定待回收的内存单元,所述内存单元为内存页或者内存块;
确定所述内存单元的回收成本,所述回收成本与占用所述内存单元的资源的加载时间和使用频率中的至少一种正相关;
对回收成本小于成本阈值的内存单元进行回收。
2.根据权利要求1所述的方法,其特征在于,所述内存单元为内存页,所述在系统缓存中确定待回收的内存单元,包括:
将使用频率小于频率阈值的资源在所述系统缓存中所占用的内存页确定为待回收的内存页;
其中,所述内存页的回收成本与占用所述内存页的资源的加载时间正相关。
3.根据权利要求1所述的方法,其特征在于,所述内存单元为内存块,所述在系统缓存中确定待回收的内存单元,包括:
将所述系统缓存中的内存块均确定为待回收的内存块;
其中,所述内存块的回收成本与占用所述内存块的资源的使用频率正相关。
4.根据权利要求1所述的方法,其特征在于,
占用所述内存单元的资源的加载时间与所述资源的大小正相关,并且与所述移动终端中存储介质的类型相关。
5.根据权利要求1至4任一所述的方法,其特征在于,所述在检测到内存回收指令时,在系统缓存中确定待回收的内存单元,包括:
在检测到所述内存回收指令时,检测预设时间段内的系统负载是否大于负载阈值;
当所述预设时间段内的系统负载小于或等于所述负载阈值时,在所述系统缓存中确定待回收的内存单元。
6.根据权利要求5所述的方法,其特征在于,若在检测到所述系统负载小于或等于所述负载阈值之前,所述移动终端的操作系统休眠,所述方法还包括:
设定休眠时长;
若在所述休眠时长内,检测到所述操作系统被唤醒,则延迟第一时间段之后,再次检测预设时间段内的系统负载是否大于所述负载阈值;
若在所述休眠时长内,未检测到所述操作系统被唤醒,则在所述休眠时长后,唤醒所述操作系统,并在所述系统缓存中确定待回收的内存单元。
7.一种移动终端的内存回收装置,其特征在于,所述装置包括:
第一确定模块,用于在检测到内存回收指令时,在系统缓存中确定待回收的内存单元,所述内存单元为内存页或者内存块;
第二确定模块,用于确定所述内存单元的回收成本,所述回收成本与占用所述内存单元的资源的加载时间和使用频率中的至少一种正相关;
回收模块,用于对回收成本小于成本阈值的内存单元进行回收。
8.根据权利要求7所述的装置,其特征在于,所述内存单元为内存页,所述第一确定模块,用于:
将使用频率小于频率阈值的资源在所述系统缓存中所占用的内存页确定为待回收的内存页;
其中,所述内存页的回收成本与占用所述内存页的资源的加载时间正相关。
9.根据权利要求7所述的装置,其特征在于,所述内存单元为内存块,所述第一确定模块,用于:
将所述系统缓存中的内存块均确定为待回收的内存块;
其中,所述内存块的回收成本与占用所述内存块的资源的使用频率正相关。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述计算机可读存储介质在计算机上运行时,使得计算机执行如权利要求1至6任一所述的移动终端的内存回收方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810320352.3A CN108563506A (zh) | 2018-04-11 | 2018-04-11 | 移动终端的内存回收方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810320352.3A CN108563506A (zh) | 2018-04-11 | 2018-04-11 | 移动终端的内存回收方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108563506A true CN108563506A (zh) | 2018-09-21 |
Family
ID=63534539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810320352.3A Pending CN108563506A (zh) | 2018-04-11 | 2018-04-11 | 移动终端的内存回收方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108563506A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078586A (zh) * | 2019-12-10 | 2020-04-28 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN111274039A (zh) * | 2020-02-14 | 2020-06-12 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
WO2021057619A1 (zh) * | 2019-09-27 | 2021-04-01 | Oppo广东移动通信有限公司 | 内存回收方法、装置、电子设备及存储介质 |
WO2021057622A1 (zh) * | 2019-09-27 | 2021-04-01 | Oppo广东移动通信有限公司 | 内存回收方法、装置、电子设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104331337A (zh) * | 2014-11-25 | 2015-02-04 | 宇龙计算机通信科技(深圳)有限公司 | 系统内存管理方法、系统内存管理装置和终端 |
US20150067238A1 (en) * | 2013-08-29 | 2015-03-05 | Sandisk Technologies Inc. | Computing Device and Method for Predicting Low Memory Conditions |
CN105701025A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN106528216A (zh) * | 2016-10-26 | 2017-03-22 | 深圳市金立通信设备有限公司 | 一种启动应用程序的方法及终端 |
CN106874121A (zh) * | 2017-03-01 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种虚拟机内存回收方法及装置 |
CN107133097A (zh) * | 2017-04-16 | 2017-09-05 | 努比亚技术有限公司 | 内存优化方法及装置 |
CN107220076A (zh) * | 2016-09-27 | 2017-09-29 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN107729125A (zh) * | 2017-10-31 | 2018-02-23 | 努比亚技术有限公司 | 应用程序常驻后台的管理方法及移动终端 |
CN107797851A (zh) * | 2016-09-05 | 2018-03-13 | 展讯通信(上海)有限公司 | 任务调度方法、装置及移动终端 |
-
2018
- 2018-04-11 CN CN201810320352.3A patent/CN108563506A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150067238A1 (en) * | 2013-08-29 | 2015-03-05 | Sandisk Technologies Inc. | Computing Device and Method for Predicting Low Memory Conditions |
CN104331337A (zh) * | 2014-11-25 | 2015-02-04 | 宇龙计算机通信科技(深圳)有限公司 | 系统内存管理方法、系统内存管理装置和终端 |
CN105701025A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN107797851A (zh) * | 2016-09-05 | 2018-03-13 | 展讯通信(上海)有限公司 | 任务调度方法、装置及移动终端 |
CN107220076A (zh) * | 2016-09-27 | 2017-09-29 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN106528216A (zh) * | 2016-10-26 | 2017-03-22 | 深圳市金立通信设备有限公司 | 一种启动应用程序的方法及终端 |
CN106874121A (zh) * | 2017-03-01 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种虚拟机内存回收方法及装置 |
CN107133097A (zh) * | 2017-04-16 | 2017-09-05 | 努比亚技术有限公司 | 内存优化方法及装置 |
CN107729125A (zh) * | 2017-10-31 | 2018-02-23 | 努比亚技术有限公司 | 应用程序常驻后台的管理方法及移动终端 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021057619A1 (zh) * | 2019-09-27 | 2021-04-01 | Oppo广东移动通信有限公司 | 内存回收方法、装置、电子设备及存储介质 |
WO2021057622A1 (zh) * | 2019-09-27 | 2021-04-01 | Oppo广东移动通信有限公司 | 内存回收方法、装置、电子设备及存储介质 |
CN111078586A (zh) * | 2019-12-10 | 2020-04-28 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN111078586B (zh) * | 2019-12-10 | 2022-03-01 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN111274039A (zh) * | 2020-02-14 | 2020-06-12 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN111274039B (zh) * | 2020-02-14 | 2023-12-08 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108563506A (zh) | 移动终端的内存回收方法及装置 | |
US8019954B2 (en) | Kernel and application cooperative memory management | |
KR101362017B1 (ko) | 스레드 시프트 : 스레드들의 코어들로의 할당 | |
US9940228B2 (en) | Proactive memory reclamation for java virtual machines | |
EP3506114B1 (en) | Memory processing method and device and storage medium | |
EP3506105B1 (en) | Method and device for processing a memory and storage medium | |
CN111158910B (zh) | 内存管理方法、装置、存储介质及电子设备 | |
CN111078406B (zh) | 内存管理方法、装置、存储介质及电子设备 | |
WO2019137252A1 (zh) | 内存处理方法、电子设备、计算机可读存储介质 | |
CN110018900B (zh) | 内存处理方法和装置、电子设备、计算机可读存储介质 | |
CN111078586B (zh) | 内存回收方法、装置、存储介质及电子设备 | |
US11782761B2 (en) | Resource management unit for capturing operating system configuration states and offloading tasks | |
CN112988332A (zh) | 一种虚拟机热迁移预测方法、系统和计算机可读存储介质 | |
US8533712B2 (en) | Virtual machine stage detection | |
WO2019128542A1 (zh) | 应用处理方法、电子设备、计算机可读存储介质 | |
US20040148469A1 (en) | Method and apparatus for predicting hot spots in cache memories | |
CN111090627B (zh) | 基于池化的日志存储方法、装置、计算机设备及存储介质 | |
CN114968546A (zh) | 一种负载处理方法及相关装置 | |
CN116166573B (zh) | 控制内存回收的方法、电子设备及存储介质 | |
CN116225976B (zh) | 一种Linux操作系统下的水位线自调整方法及系统 | |
Zhang et al. | Predicting for I/O stack optimizations on cyber–physical systems | |
CN117251292B (zh) | 内存管理方法、系统、终端及存储介质 | |
Kim et al. | Memory management scheme to improve utilization efficiency and provide fast contiguous allocation without a statically reserved area | |
JP2014157476A (ja) | 計測装置及び計測方法 | |
CN117827694A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180921 |