CN108205474B - 内存管理方法、终端设备、计算机装置以及可读存储介质 - Google Patents
内存管理方法、终端设备、计算机装置以及可读存储介质 Download PDFInfo
- Publication number
- CN108205474B CN108205474B CN201710738512.1A CN201710738512A CN108205474B CN 108205474 B CN108205474 B CN 108205474B CN 201710738512 A CN201710738512 A CN 201710738512A CN 108205474 B CN108205474 B CN 108205474B
- Authority
- CN
- China
- Prior art keywords
- memory
- target
- group
- unit
- terminal equipment
- 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
Links
Images
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
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5022—Workload threshold
Abstract
本申请实施例公开了一种内存管理方法、终端设备、计算机装置以及可读存储介质,用于管理终端设备的内存使用量,避免重要应用的进程在该进程所在分组的内存使用量达到阈值后被停止运行。本申请实施例方法包括:终端设备将当前运行的进程进行分组,所述终端设备分别获取所述分组中每个分组的内存使用量;所述终端设备根据所述每个分组的内存使用量确定目标分组,所述目标分组的内存使用量大于所述目标分组的第一内存阈值;所述终端设备释放所述目标分组内进程的占用内存;若释放所述占用内存后的所述目标分组的内存使用量不大于所述目标分组的第二内存阈值,则所述终端设备继续运行所述目标分组内的进程。
Description
技术领域
本申请涉及计算机领域,特别涉及一种内存管理方法、终端设备、计算机装置以及可读存储介质。
背景技术
安卓(英文全称:android)系统是一种自由及开放源代码的操作系统,主要应用于终端设备,作为终端设备的操作系统,例如智能手机以及平板电脑等,随着技术的发展,终端设备已经成为人们日常生活中不可或缺的部分,而随着终端设备中运行的应用程序以及应用程序运行的时长增加,系统内运行的进程也越来越多,占用的系统内存也越来越多。
终端设备系统内部的内存控制子系统可以对系统内部进程所占用的内存进行监控。首先终端设备将系统内部的所有进程按照预置的规则进行分组,随后终端设备系统内部的内存控制子系统对每个组的内存使用量进行监控,当组内的使用量达到预定的阈值时,则对该组内所有的进程进行冻结或终止进程,从而限定系统内存的使用量。
然而,一些不需要被停止运行的进程,例如,系统的安全监控软件的进程或通信软件的进程等,当该进程所在分组的内存使用量达到阈值时,也将冻结或终止该分组内所有的进程,使当前不需要被停止运行的进程被冻结或终止,影响用户体验,例如,若通信软件的进程在后台运行,若当该通信软件所在分组的内存使用量达到阈值后,将停止运行该通信软件的进程,那么该通信软件将停止工作,无法接收信息。
发明内容
本申请实施例提供了一种内存管理方法、终端设备、计算机装置以及可读存储介质,用于管理终端设备的内存使用量,避免重要应用的进程在该进程所在分组的内存使用量达到阈值后被停止运行。
有鉴于此,本申请第一方面提供一种内存管理的方法,包括:
终端设备将当前运行的进程进行分组;
所述终端设备分别获取所述分组中每个分组的内存使用量;
所述终端设备根据所述每个分组的内存使用量确定目标分组,所述目标分组的内存使用量大于所述目标分组的第一内存阈值;
所述终端设备释放所述目标分组内进程的占用内存;
若释放所述占用内存后的所述目标分组的内存使用量不大于所述目标分组的第二内存阈值,则所述终端设备继续运行所述目标分组内的进程。
可选地,所述终端设备将当前运行的进程进行分组,包括:
所述终端设备将在后台运行的每个应用程序所包括的进程分别划分为一组,所述在后台运行的每个应用程序所包括的进程包含于所述当前运行的进程。
可选地,所述终端设备释放所述目标分组中的进程的占用内存之前,所述方法还包括:
所述终端设备获取所述目标分组内的进程对应的应用程序的优先级;
所述终端设备判断所述优先级是否高于预置的优先级;
若是,则所述终端设备提高所述第一内存阈值和/或所述第二内存阈值。
可选地,所述终端设备释放所述目标分组中的进程的占用内存之前,所述方法还包括:
所述终端设备获取所述目标分组内的进程对应的应用程序的使用率,所述使用率为所述应用程序在预置的时长内打开的次数和/或运行时长;
所述终端设备判断所述使用率是否高于预置的使用率;
若是,则所述终端设备提高所述第一内存阈值和/或所述第二内存阈值。
可选地,所述终端设备释放所述每个分组中的进程的占用内存之后,所述方法还包括:
若释放所述占用内存后的所述目标分组的内存使用量大于所述目标分组的第二内存阈值,则所述终端设备停止运行所述目标分组内的进程。
本申请第二方面提供一种终端设备,包括:
分组单元,用于将当前运行的进程进行分组;
获取单元,分别获取所述分组中每个分组的内存使用量;
确定单元,用于根据所述每个分组的内存使用量确定目标分组,所述目标分组的内存使用量大于所述目标分组的第一内存阈值;
释放单元,释放所述目标分组内进程的占用内存;
运行单元,若释放所述占用内存后的所述目标分组的内存使用量不大于所述目标分组的第二内存阈值,用于继续运行所述目标分组内的进程。
可选地,
所述分组单元,在所述释放单元释放所述目标分组中的进程的占用内存之前,具体用于将在后台运行的每个应用程序所包括的进程分别划分为一组,所述在后台运行的每个应用程序所包括的进程包含于所述当前运行的进程。
可选地,所述终端设备还包括:第一判断单元,第一提高单元;
所述获取单元,在所述释放单元释放所述目标分组中的进程的占用内存之前,还用于获取所述目标分组内的进程对应的应用程序的优先级;
所述第一判断单元,用于判断所述优先级是否高于预置的优先级;
所述第一提高单元,若所述第一判断单元的判断结果为是,用于提高所述第一内存阈值和/或所述第二内存阈值。
可选地,所述终端设备还包括:第二判断单元,第二提高单元;
所述获取单元,还用于获取所述目标分组内的进程对应的应用程序的使用率,所述使用率为所述应用程序在预置的时长内打开的次数和/或运行时长;
所述第二判断单元,用于判断所述使用率是否高于预置的使用率;
所述第二提高单元,若所述第二判断单元的判断结果为是,用于提高所述第一内存阈值和/或所述第二内存阈值。
可选地,所述终端设备还包括:
停止单元,若释放所述占用内存后的所述目标分组的内存使用量大于所述目标分组的第二内存阈值,则用于停止运行所述目标分组内的进程。
本申请第三方面提供一种计算机装置,可以包括:
处理器、存储器、总线以及输入输出接口,该处理器、该存储器与该输入输出接口通过该总线连接;
该存储器,用于存储程序代码;
该处理器调用该存储器中的程序代码时执行本申请第一方面提供的方法的步骤。
本申请实施例第四方面提供一种存储介质,需要说明的是,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产口的形式体现出来,该计算机软件产品存储在一个存储介质中,用于储存为上述设备所用的计算机软件指令,其包含用于执行上述第一方面为终端设备所设计的程序。
该存储介质包括:U盘、移动硬盘、只读存储器(英文缩写ROM,英文全称:Read-OnlyMemory)、随机存取存储器(英文缩写:RAM,英文全称:Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例第五方面提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现上述第一方面中任意一项的内存管理的方法中的流程。
从以上技术方案可以看出,本申请实施例具有以下优点:
在本申请实施例中,终端设备将当前运行的进程进行分组,终端设备分别获取所述分组中每个分组的内存使用量,终端设备根据每个分组的内存使用量确定目标分组,该目标分组的内存使用量大于目标分组的内存阈值,终端设备释放目标分组内进程的占用内存,若释放占用内存后的目标分组的内存使用量不大于目标分组的内存阈值,则终端设备继续运行所述目标分组内的进程。当一些不需要被停止运行的进程,例如通信软件的进程或安全监控软件的进程等,所在分组的内存使用量达到阈值时,首先释放该分组内所有进程的占用内存,释放后再判断该分组的使用内存是否达到阈值,若否,则可以继续运行该分组内的进程,包括该不需要被停止运行的进程。
附图说明
图1为现有方案的内存管理方法;
图2为本申请实施例中的内存管理方法的一个实施例流程示意图;
图3为本申请实施例中的内存管理方法的另一个实施例流程示意图;
图4为本申请实施例中的内存管理方法的另一个实施例流程示意图;
图5为本申请实施例中的内存管理方法中释放内存的步骤的一个流程示意图;
图6为本申请实施例中终端设备的一个实施例示意图;
图7为本申请实施例中终端设备的另一个实施例示意图;
图8为本申请实施例中终端设备的另一个实施例示意图。
具体实施方式
本申请实施例提供了一种内存管理方法、终端设备、计算机装置以及可读存储介质,用于管理终端设备的内存使用量,避免重要应用的进程在该进程所在分组的内存使用量达到阈值后被停止运行。
现有方案的内存管理方法如图1所示,首先使用内存管理子系统对进程进行分组,然后对每个分组的内存使用量进行监测,判断每个分组的内存使用量是否大于阈值,若否,则继续对内存使用量进行监测,若是,则关闭该分组内的进程,从而限定每个分组的内存使用量。
下面对本申请实施例中的内存管理的方法进行说明,请参阅如2,本申请实施例中的内存管理方法的一个实施例流程示意图,包括:
201、终端设备将当前运行的进程进行分组;
终端设备将当前正在运行的进程进行分组,每个分组可以包括一个进程,也可以包括至少两个进程,具体此处不作限定。
202、终端设备分别获取分组中每个分组的内存使用量;
终端设备获取每个分组的内存使用量,应理解,终端设备对每个分组的内存使用量进行监测,获取每个分组的内存使用量的频率可以是1毫秒获取一次,也可以是1秒获取一次,具体此处不作限定。
203、终端设备根据每个分组的内存使用量确定目标分组;
将每个分组中内存使用量满足预置的第一内存阈值的分组确定为目标分组,即目标分组的内存使用量满足预置的第一内存阈值,需要说明的是,该目标分组可以包括一个分组,也可以包括至少两个分组,具体此处不作限定。应理解,可以是每个分组对应相同第一内存阈值,也可以是每个分组分别对应不同的第一内存阈值,具体此处不作限定。
204、终端设备释放目标分组内进程的占用内存;
当目标分组的内存使用量满足预置的第一阈值后,终端设备将释放该目标分组内所有进程的占用内存,可以减少该目标分组的内存使用量。
205、终端设备继续运行目标分组内的进程。
释放目标分组内进程的占用内存后,重新获取该目标分组的内存使用量,若该内存使用量不大于预置的第二内存阈值,则继续运行目标分组内的进程。应理解,若目标分组为至少两个分组,则该目标分组中的每个分组可以对应一个相同的第二内存阈值,也可以分别对应不同的第二内存阈值,具体此处不作限定。
需要说明的是,第一内存阈值与第二阈值可以相等,也可以不相等,具体此处不作限定。
在本申请实施例中,首先终端设备将当前运行的进程进行分组,然后获取每个分组的内存使用量,将内存使用量满足第一内存阈值的分组确定为目标分组,释放该目标分组内进程的占用内存,若释放占用内存后的目标进程的内存使用量不大于预置的第二内存阈值,则继续运行该目标分组内的进程,可以避免需要继续运行的进程在所在分组的内存使用量满足阈值后直接被停止运行。
在具体实施场景中,例如,手机内有多个运行的进程,将该多个运行的进程进行分组,可以分为5个进程一组,可以划分为第一分组、第二分组以及第三分组,若第一分组以及第三分组的内存使用量大于50兆字节(英文缩写:MB,英文全称:MByte),则分别将第一分组以及第三分组内的5个分组的占用内存释放,然后判断释放后的第一分组以及第三分组的内存使用量是否大于50MB,若不大于,则继续运行第一分组以及第三分组内的进程。
下面对本申请实施例中的内存管理方法进行进一步说明,请参阅图3,本申请实施例中的内存管理方法的另一个实施例流程示意图,包括:
301、终端设备将在后台运行的每个应用程序所包括的进程分别划分为一组;
终端设备将当前在后台运行的进程进行分组,每个应用程序所包括的进程分别划分为一组,应理解,此处对系统进程不进行分组。
302、终端设备分别获取分组中每个分组的内存使用量;
终端设备分别获取每个分组的内存使用量,对每个分组的内存使用量进行监测,需要说明的是,终端设备获取每个分组的内存使用量,可以是1秒获取一次,也可以是1毫秒获取一次,具体此处不做限定。
303、终端设备获取目标分组内的进程对应的应用程序的优先级;
终端设备获取目标分组内的进程对应的应用程序的优先级,该优先级可以由终端设备设定。
304、终端设备判断优先级是否高于预置的优先级,若是,则执行步骤305,若否,则执行步骤306;
若目标分组内进程的应用程序的优先级高于预置的优先级,则执行步骤305,若否则执行步骤306。
305、终端设备提高第一内存阈值和/或第二内存阈值;
若目标分组内进程的应用程序的优先级高于预置的优先级,则提高目标分组对应的第一内存阈值和/或第二内存阈值,需要说明的是,可以同时提高第一内存阈值和第二内存阈值,也可以只提高第二内存阈值,具体此处不作限定。
还需要说明的是,第一内存阈值与第二内存阈值可以相同,也可以不相同,具体此处不作限定。应理解,第一内存阈值与第二内存阈值还可以根据该目标分组内的进程的运行时长进行调整,例如,该目标分组内的进程的运行时长越长,第一内存阈值与第二内存阈值的设定越高。
306、终端设备判断每个分组的内存使用量是否满足第一内存阈值,若是,则执行步骤307,若否,则执行步骤302;
终端设备获取每个分组的内存使用量后,判断每个分组的内存使用量是否满足预置的第一内存阈值,若是,则执行步骤304,并确定内存使用量满足该第一内存阈值的分组为目标分组,若否,则执行步骤302,继续对内存使用量未满足第一内存阈值的分组进行监测。
需要说明的是,本申请实施例对步骤304与步骤306的执行顺序不作限定,可以先执行步骤304,也可以先执行步骤306,还可以同时执行步骤304与步骤306,具体此处不作限定。
307、终端设备释放目标分组内进程的占用内存;
终端设备释放目标分组内的进程的占用内存,不释放完目标分组的所有使用内存。
308、终端设备判断分组内的目标分组的内存使用量是否满足第二内存阈值,若是,则执行步骤309,若否,则执行步骤310;
终端设备判断释放完分组内进程的占用内存后的目标分组的内存使用量是否满足第二内存阈值,若是,则执行步骤309,若否,则执行步骤310。
309、终端设备继续运行目标分组内的进程;
当释放完分组内进程的占用内存后的目标分组的内存使用量不大于第二内存阈值,则继续运行目标分组内的进程。
310、终端设备停止运行目标分组内的进程。
当释放完分组内进程的占用内存后的目标分组的内存使用量大于第二内存阈值,则停止运行目标分组内的进程,该停止运行包括冻结或终止该目标分组内的进程。
在本申请实施例中,首先终端设备将当前运行的进程进行分组,将一个应用程序的进程分为同一组,然后可以获取每个分组内进程对应的应用程序的优先级,若该优先级高于预置的优先级,则可以提高该分组对应的第一内存阈值和/或第二内存阈值,获取每个分组的内存使用量,判断该内存使用量是否满足第一内存阈值,若是,则将内存使用量满足第一内存阈值的分组确定为目标分组,释放该目标分组内进程的占用内存,然后继续判断释放占用内存后的目标进程的内存使用量是否大于第二内存阈值,若释放占用内存后的目标进程的内存使用量不大于预置的第二内存阈值,则继续运行该目标分组内的进程,若释放占用内存后的目标进程的内存使用量大于预置的第二内存阈值,则停止运行目标分组内的进程,本申请实施例根据目标分组内进程对应的应用程序的优先级调整目标分组对应的内存阈值,增加了优先级高的应用程序的分组的内存阈值,避免优先级高的应用程序的进程被提前释放占用内存或停止运行。
在实际应用场景中,金融程序A与金融程序B在后台运行,将金融程序A与金融程序B的进程分别分为不同组,金融程序A的进程分为分组A,金融程序B的进程分为分组B,同时获取金融程序A的优先级A与金融程序B的优先级B,若优先级A高于预置的优先级C,则提高分组A对应的第一内存阈值和/或第二内存阈值,对分组A与分组B的内存使用量监测,若分组B的内存使用量不满足分组B对应的第一内存阈值,则继续对分组B的内存使用量进行监测,若分组A的内存使用量满足分组A对应的第一内存阈值,则释放分组A内进程的占用内存,获取释放完占用内存后分组A的内存使用量,判断该分组A的内存使用量是否大于第二内存阈值,若否,则继续运行分组A内的进程,若是,则冻结或关闭运行分组A内的进程。
请参阅图4,本申请实施例中的内存管理方法的另一个实施例流程示意图,包括:
401、终端设备将在后台运行的每个应用程序所包括的进程分别划分为一组;
402、终端设备分别获取分组中每个分组的内存使用量;
本实施例中的步骤401至步骤402与前述图3所示实施例中的步骤301至步骤302类似,此处不再赘述。
403、终端设备获取目标分组内的进程对应的应用程序的使用率;
终端设备获取目标分组内的进程对应的应用程序的使用率,该使用率可以是目标分组内的进程对应的应用程序在预设时长内打开的次数和/或运行时长。
404、终端设备判断使用率是否高于预置的使用率,若是,则执行步骤405,若否,则执行步骤406;
终端设备判断该目标分组内进程对应的应用程序的使用率是否高于预置的使用率,若是,则执行步骤405,若否,则执行步骤406。
405、终端设备提高第一内存阈值和/或第二内存阈值;
若目标分组内的进程使用率高于预置的使用率,则提高第一内存阈值和/或第二内存阈值,需要说明的是,可以同时提高第一内存阈值和第二内存阈值,也可以只提高第二内存阈值,具体此处不作限定。
406、终端设备判断每个分组的内存使用量是否满足第一内存阈值,若是,则执行步骤407,若否,则执行步骤402;
407、终端设备释放目标分组内进程的占用内存;
408、终端设备判断分组内的目标分组的内存使用量是否满足第二内存阈值,若是,则执行步骤409,若否,则执行步骤410;
409、终端设备继续运行目标分组内的进程;
410、终端设备停止运行目标分组内的进程。
本实施例中的步骤406至步骤410与前述图3所示实施例中的步骤306至步骤310类似,此处不再赘述。
在本申请实施例中,首先终端设备将当前运行的进程进行分组,将一个应用程序的进程分为同一组,然后可以获取每个分组内进程对应的应用程序的使用率,若该使用率高于预置的使用率,则可以提高该分组对应的第一内存阈值和/或第二内存阈值,获取每个分组的内存使用量,判断该内存使用量是否满足第一内存阈值,若是,则将内存使用量满足第一内存阈值的分组确定为目标分组,释放该目标分组内进程的占用内存,然后继续判断释放占用内存后的目标进程的内存使用量是否大于第二内存阈值,若释放占用内存后的目标进程的内存使用量不大于预置的第二内存阈值,则继续运行该目标分组内的进程,若释放占用内存后的目标进程的内存使用量大于预置的第二内存阈值,则停止运行目标分组内的进程,本申请实施例根据目标分组内进程对应的应用程序的使用率调整目标分组对应的内存阈值,增加了使用率高的应用程序的分组的内存阈值,避免使用率高的应用程序的进程被提前释放占用内存或停止运行。
在实际应用场景中,通信程序A为经常使用的程序,终端设备将通信程序A的进程分为一组,监测分组的内存使用量,终端设备通过通信程序A在24小时内打开的次数以及运行的时长计算通信程序A的使用率,若通信程序A的使用率高于预置的使用率,则提高第一内存阈值以及第二内存阈值,若该分组的内存使用量高于第一内存阈值,则释放该分组内进程的占用内存,释放完该占用内存后,判断释放完该占用内存后的该分组的内存使用量是否不大于第二内存阈值,若是,则继续运行该分组内的通信程序A的进程,若否,则冻结或终止该分组内的通信程序A的进程。
应理解,前述图2至图4中的步骤204、步骤307以及步骤407对本申请实施例中的内存管理的方法中的释放目标分组内进程的占用内存进行了大概说明,下面结合说明附图对本申请实施例中的释放目标分组内进程的占用内存的步骤进行详细说明。
一个进程占用的大部分物理页,是在ACTIVE_ANON和ACTIVE_FILE链表中的物理页,为了提高回收效率,需要对ACTIVE_ANON和ACTIVE_FILE链表中的物理页进行选择性回收,优选的,便是回收其中价值较低的物理页,或者说,活跃度较低的物理页,请参阅图5,本申请实施例中的内存管理方法中释放内存的步骤的一个流程示意图。
501、获取目标进程对应的目标物理页;
在针对进程进行内存回收的过程中,将前述图2至图4中本申请实施例中的目标分组内待释放占用内存的进程作为目标进程,那么可以获取目标进程对应的目标物理页。获取进程对应的物理页的方式一般为,根据进程识别号(英文缩写:PID,英文全称:ProcessIdentification),找到进程的虚拟内存空间(英文缩写:VMA,英文全称:Virtual MemoryArea),遍历VMA可以找到进程对应的物理页,还可以通过其他方式查找进程对应的物理页,此处不做具体限定。
目标物理页可以为目标进程对应的全部物理页,也可以为目标进程对应的部分物理页。对目标进程的回收可以通过串行方式进行,也就是说每次回收只选择一个物理页作为目标物理页,执行本发明的回收流程,或者也可以通过并行方式进行,也就是说同时选择多个物理页作为目标物理页,对多个物理页同时执行本发明的回收流程。
502、读取目标物理页的活跃度的值;
获取目标进程对应的目标物理页之后,可以读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关,也就是说,物理页的活动程度越高,则其活跃度的值越大。可以理解的是,物理页的活跃度的可选值应不少于两个。
需要说明的是,活跃度的值可以为数值,此时可以按照数值大小确定活跃度的值的大小,但是,活跃度的值不应仅限为数值,只要根据预设的比较标准能够判定不同值的高低即可。
503、若目标物理页的活跃度的值高于回收标准,则降低目标物理页的活跃度,活跃度的值高于回收标准的物理页处于活动状态;
读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,活跃度的值高于回收标准的物理页处于活动状态,回收标准可以视为是活动状态的物理页的活跃度和非活动状态的物理页的活跃度之间边界值。若判定目标物理页的活跃度的值高于回收标准,则可以降低目标物理页的活跃度,若判定目标物理页的活跃度的值不高于回收标准,则可以执行其他操作,比如回收目标物理页。
504、读取目标物理页的活跃度的值;
在步骤503之后,可以读取目标物理页的活跃度的值。若在步骤504之前,目标物理页被访问,则目标物理页的活跃度的值增加。
505、若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
再次读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。若目标物理页的活跃度的值不高于回收标准时,表明目标物理页处于非活动状态,那么可以回收该目标物理页。
前述对本申请实施例中的内存管理方法进行的具体说明,下面对本申请实施例中的装置进行说明,请参阅图6,本申请实施例中终端的一个实施例示意图,包括:
分组单元601,用于将当前运行的进程进行分组;
获取单元602,分别获取所述分组中每个分组的内存使用量;
确定单元603,用于根据所述每个分组的内存使用量确定目标分组,所述目标分组的内存使用量大于所述目标分组的第一内存阈值;
释放单元604,释放所述目标分组内进程的占用内存;
运行单元605,若释放所述占用内存后的所述目标分组的内存使用量不大于所述目标分组的第二内存阈值,用于继续运行所述目标分组内的进程。
请参阅图7,本申请实施例中终端的另一个实施例示意图,包括:
分组单元701、获取单元702、确定单元703、释放单元704、运行单元705、第一判断单元706、第一提高单元707、第二判断单元708、第二提高单元709以及停止单元710。
本申请实施例中的分组单元701、获取单元702、确定单元703、释放单元704以及运行单元705与前述图6中的分组单元601、获取单元602、确定单元603、释放单元604以及运行单元605功能类似,具体此处不作限定。
可选地,在本申请的一些实施例中,
所述分组单元701,在所述释放单元704释放所述目标分组中的进程的占用内存之前,具体用于将在后台运行的每个应用程序所包括的进程分别划分为一组,所述在后台运行的每个应用程序所包括的进程包含于所述当前运行的进程。
可选地,在本申请的一些实施例中,
所述获取单元702,在所述释放单元释放所述目标分组中的进程的占用内存之前,还用于获取所述目标分组内的进程对应的应用程序的优先级;
所述第一判断单元706,用于判断所述优先级是否高于预置的优先级;
所述第一提高单元707,若所述第一判断单元706的判断结果为是,用于提高所述第一内存阈值和/或所述第二内存阈值。
可选地,在本申请的一些实施例中,
所述获取单元702,还用于获取所述目标分组内的进程对应的应用程序的使用率,所述使用率为所述应用程序在预置的时长内打开的次数和/或运行时长;
所述第二判断单元708,用于判断所述使用率是否高于预置的使用率;
所述第二提高单元709,若所述第二判断单元708的判断结果为是,用于提高所述第一内存阈值和/或所述第二内存阈值。
可选地,在本申请的一些实施例中,
停止单元710,若释放所述占用内存后的所述目标分组的内存使用量大于所述目标分组的内存阈值,则用于停止运行所述目标分组内的进程。
图8是本申请实施例中终端设备的另一个实施例示意图,该终端设备800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessing units,CPU)822(例如,一个或一个以上处理器)和存储器832,一个或一个以上存储应用程序842或数据844的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器832和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对终端设备中的一系列指令操作。更进一步地,中央处理器822可以设置为与存储介质830通信,在终端设备800上执行存储介质830中的一系列指令操作。
终端设备800还可以包括一个或一个以上电源826,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口858,和/或,一个或一个以上操作系统841,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由终端设备所执行的步骤可以基于该图8所示的终端设备结构。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请图2至图5中各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (12)
1.一种内存管理的方法,其特征在于,包括:
终端设备将当前运行的进程进行分组;
所述终端设备分别获取所述分组中每个分组的内存使用量;
所述终端设备根据所述每个分组的内存使用量确定目标分组,所述目标分组的内存使用量大于所述目标分组的第一内存阈值;
所述终端设备释放所述目标分组内进程的占用内存;
若释放所述占用内存后的所述目标分组的内存使用量不大于所述目标分组的第二内存阈值,则所述终端设备继续运行所述目标分组内的进程;
所述终端设备释放所述目标分组内进程的占用内存,包括:
获取目标进程对应的目标物理页;
读取目标物理页的活跃度的值;
若所述目标物理页的活跃度的值高于回收标准,则降低所述目标物理页的活跃度;其中,活跃度的值高于回收标准的物理页处于活动状态;
读取目标物理页的活跃度的值;
若所述目标物理页的活跃度的值不高于回收标准,则回收所述目标物理页。
2.根据权利要求1所述的方法,其特征在于,所述终端设备将当前运行的进程进行分组,包括:
所述终端设备将在后台运行的每个应用程序所包括的进程分别划分为一组,所述在后台运行的每个应用程序所包括的进程包含于所述当前运行的进程。
3.根据权利要求2所述的方法,其特征在于,所述终端设备释放所述目标分组中的进程的占用内存之前,所述方法还包括:
所述终端设备获取所述目标分组内的进程对应的应用程序的优先级;
所述终端设备判断所述优先级是否高于预置的优先级;
若是,则所述终端设备提高所述第一内存阈值和/或所述第二内存阈值。
4.根据权利要求2所述的方法,其特征在于,所述终端设备释放所述目标分组中的进程的占用内存之前,所述方法还包括:
所述终端设备获取所述目标分组内的进程对应的应用程序的使用率,所述使用率为所述应用程序在预置的时长内打开的次数和/或运行时长;
所述终端设备判断所述使用率是否高于预置的使用率。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述终端设备释放所述每个分组中的进程的占用内存之后,所述方法还包括:
若释放所述占用内存后的所述目标分组的内存使用量大于所述目标分组的第二内存阈值,则所述终端设备停止运行所述目标分组内的进程。
6.一种终端设备,其特征在于,包括:
分组单元,用于将当前运行的进程进行分组;
获取单元,分别获取所述分组中每个分组的内存使用量;
确定单元,用于根据所述每个分组的内存使用量确定目标分组,所述目标分组的内存使用量大于所述目标分组的第一内存阈值;
释放单元,释放所述目标分组内进程的占用内存;
运行单元,若释放所述占用内存后的所述目标分组的内存使用量不大于所述目标分组的第二内存阈值,用于继续运行所述目标分组内的进程;
所述释放单元具体用于:
获取目标进程对应的目标物理页;
读取目标物理页的活跃度的值;
若所述目标物理页的活跃度的值高于回收标准,则降低所述目标物理页的活跃度;其中,活跃度的值高于回收标准的物理页处于活动状态;
读取目标物理页的活跃度的值;
若所述目标物理页的活跃度的值不高于回收标准,则回收所述目标物理页。
7.根据权利要求6所述的终端设备,其特征在于,
所述分组单元,在所述释放单元释放所述目标分组中的进程的占用内存之前,具体用于将在后台运行的每个应用程序所包括的进程分别划分为一组,所述在后台运行的每个应用程序所包括的进程包含于所述当前运行的进程。
8.根据权利要求7所述的终端设备,其特征在于,所述终端设备还包括:第一判断单元,第一提高单元;
所述获取单元,在所述释放单元释放所述目标分组中的进程的占用内存之前,还用于获取所述目标分组内的进程对应的应用程序的优先级;
所述第一判断单元,用于判断所述优先级是否高于预置的优先级;
所述第一提高单元,若所述第一判断单元的判断结果为是,用于提高所述第一内存阈值和/或所述第二内存阈值。
9.根据权利要求7所述的终端设备,其特征在于,所述终端设备还包括:第二判断单元,第二提高单元;
所述获取单元,还用于获取所述目标分组内的进程对应的应用程序的使用率,所述使用率为所述应用程序在预置的时长内打开的次数和/或运行时长;
所述第二判断单元,用于判断所述使用率是否高于预置的使用率;
所述第二提高单元,若所述第二判断单元的判断结果为是,用于提高所述第一内存阈值和/或所述第二内存阈值。
10.根据权利要求6至9中任一项所述的终端设备,其特征在于,所述终端设备还包括:
停止单元,若释放所述占用内存后的所述目标分组的内存使用量大于所述目标分组的第二内存阈值,则用于停止运行所述目标分组内的进程。
11.一种计算机装置,其特征在于,包括:
处理器、存储器、总线以及输入输出接口;
所述存储器中存储有程序代码;
所述处理器调用所述存储器中的程序代码时执行权利要求1至5中任一项所述方法的步骤。
12.一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至5中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710738512.1A CN108205474B (zh) | 2017-08-23 | 2017-08-23 | 内存管理方法、终端设备、计算机装置以及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710738512.1A CN108205474B (zh) | 2017-08-23 | 2017-08-23 | 内存管理方法、终端设备、计算机装置以及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108205474A CN108205474A (zh) | 2018-06-26 |
CN108205474B true CN108205474B (zh) | 2022-03-04 |
Family
ID=62603924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710738512.1A Active CN108205474B (zh) | 2017-08-23 | 2017-08-23 | 内存管理方法、终端设备、计算机装置以及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108205474B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116841709A (zh) * | 2018-10-26 | 2023-10-03 | 创新先进技术有限公司 | 风控业务系统中的风控任务分组方法、装置、计算机设备 |
CN109558297A (zh) * | 2018-11-27 | 2019-04-02 | 苏州思必驰信息科技有限公司 | 内存管理方法及装置 |
CN109857561B (zh) * | 2019-02-12 | 2021-03-26 | 武汉深之度科技有限公司 | 一种内存管理方法及计算设备 |
CN112445606A (zh) * | 2019-08-30 | 2021-03-05 | 华为技术有限公司 | 内存回收方法及装置 |
CN111338796B (zh) * | 2020-02-18 | 2023-07-18 | 广州虎牙科技有限公司 | 应用内存优化方法、装置、终端设备及可读存储介质 |
CN112363841B (zh) * | 2020-11-27 | 2022-11-04 | Oppo(重庆)智能科技有限公司 | 应用进程的查杀方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8886866B2 (en) * | 2010-11-30 | 2014-11-11 | International Business Machines Corporation | Optimizing memory management of an application running on a virtual machine |
CN104346229A (zh) * | 2014-11-14 | 2015-02-11 | 国家电网公司 | 一种用于嵌入式操作系统进程间通讯优化的处理方法 |
CN105824702A (zh) * | 2016-03-22 | 2016-08-03 | 乐视云计算有限公司 | 一种管理程序内存占用量的方法和终端 |
CN106407010A (zh) * | 2016-09-06 | 2017-02-15 | 北京珠穆朗玛移动通信有限公司 | 一种内存管理方法及移动终端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8909785B2 (en) * | 2011-08-08 | 2014-12-09 | International Business Machines Corporation | Smart cloud workload balancer |
-
2017
- 2017-08-23 CN CN201710738512.1A patent/CN108205474B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8886866B2 (en) * | 2010-11-30 | 2014-11-11 | International Business Machines Corporation | Optimizing memory management of an application running on a virtual machine |
CN104346229A (zh) * | 2014-11-14 | 2015-02-11 | 国家电网公司 | 一种用于嵌入式操作系统进程间通讯优化的处理方法 |
CN105824702A (zh) * | 2016-03-22 | 2016-08-03 | 乐视云计算有限公司 | 一种管理程序内存占用量的方法和终端 |
CN106407010A (zh) * | 2016-09-06 | 2017-02-15 | 北京珠穆朗玛移动通信有限公司 | 一种内存管理方法及移动终端 |
Also Published As
Publication number | Publication date |
---|---|
CN108205474A (zh) | 2018-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108205474B (zh) | 内存管理方法、终端设备、计算机装置以及可读存储介质 | |
CN111352861B (zh) | 内存压缩方法、装置及电子设备 | |
CN108228449B (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN108228341B (zh) | 内存回收方法及装置、终端设备及计算机可读存储介质 | |
US20160378557A1 (en) | Task allocation determination apparatus, control method, and program | |
CN108205498B (zh) | 内存回收方法及装置、计算机装置及计算机可读存储介质 | |
CN114546634B (zh) | 对系统的同步重启的管理 | |
CN108205471B (zh) | 内存回收方法及装置、计算机装置及计算机可读存储介质 | |
CN112650575A (zh) | 资源调度方法、装置和云端服务系统 | |
CN109521970B (zh) | 一种数据处理方法及相关设备 | |
CN114996173B (zh) | 一种管理存储设备写操作的方法和装置 | |
CN111984413A (zh) | 内存回收方法、装置、电子设备及存储介质 | |
CN112905399A (zh) | 数据处理方法、异常情况预测方法及相关产品 | |
CN108287760B (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN108228342B (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN108287761B (zh) | 内存回收方法及装置、终端设备及计算机可读存储介质 | |
CN107912063A (zh) | 一种内存回收方法及装置 | |
CN110727605B (zh) | 内存回收方法、装置以及电子设备 | |
CN110543432B (zh) | 内存碎片整理方法、装置、终端及存储介质 | |
CN107589907B (zh) | 数据处理方法、电子设备及计算机可读存储介质 | |
CN113392037A (zh) | 内存回收方法、装置、计算机设备和存储介质 | |
CN108228340B (zh) | 终端控制方法及装置、终端设备及计算机可读存储介质 | |
CN107590023B (zh) | 数据处理方法、电子设备及计算机可读存储介质 | |
JP6217008B2 (ja) | 電子機器、制御方法、及び、プログラム | |
CN115617515A (zh) | 智能物联网操作系统的内存分配方法、装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |