CN111367828B - 内存压缩方法、装置、终端及存储介质 - Google Patents
内存压缩方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN111367828B CN111367828B CN202010125681.XA CN202010125681A CN111367828B CN 111367828 B CN111367828 B CN 111367828B CN 202010125681 A CN202010125681 A CN 202010125681A CN 111367828 B CN111367828 B CN 111367828B
- Authority
- CN
- China
- Prior art keywords
- memory
- information
- memory compression
- running
- terminal
- 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
Classifications
-
- 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
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Telephone Function (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种内存压缩方法、装置、终端及存储介质。该方法包括:获取第一进程的运行信息,第一进程是指在后台运行的任一应用程序对应的进程,运行信息用于描述第一进程在目标时段内的运行状态;获取与运行信息相对应的内存压缩策略;按照与第一进程的运行信息相对应的内存压缩策略,对第一进程所占用的内存进行压缩。本申请实施例提供的技术方案,提供一种主动对后台进程的应用程序对应的进程进行内存压缩的措施,能够及时释放出更多的可用内存,保证终端的可用内存始终处于充足状态,进而提高终端的运行效率。
Description
技术领域
本申请实施例涉及终端技术领域,特别涉及一种内存压缩方法、装置、终端及存储介质。
背景技术
目前,诸如手机、平板电脑之类的终端中可安装各类应用(application,APP),以扩充终端的功能。上述应用在运行时会占用终端的内存,当终端的可用内存余量较少时,终端的运行速度变慢,甚至出现卡顿等情况。
为避免终端的可用内存余量不足时终端的运行速度变慢、乃至卡顿等情况发生,相关技术提供了一种内存压缩方案。在相关技术中,终端在应用的运行过程中持续监测可用内存余量,当终端在监测到可用内存小于预设阈值时,终端对某一进程所占用的内存进行压缩,压缩后该进程所占用的内存会减小,此时终端的可用内存增多。
发明内容
本申请实施例提供一种内存压缩方法、装置、终端及存储介质。所述技术方案如下:
第一方面,本申请实施例提供了一种内存压缩方法,所述方法包括:
获取第一进程的运行信息,所述第一进程是指在后台运行的应用程序对应的进程,所述运行信息用于描述所述第一进程在目标时段内的运行状态;
获取与所述运行信息相对应的内存压缩策略;
按照所述与所述第一进程的运行信息相对应的内存压缩策略,对所述第一进程所占用的内存进行压缩。
第二方面,本申请实施例提供了一种内存压缩装置,所述装置包括:
信息获取模块,用于获取第一进程的运行信息,所述第一进程是指在后台运行的应用程序对应的进程,所述运行信息用于描述所述第一进程在目标时段内的运行状态;
策略获取模块,用于获取与所述运行信息相对应的内存压缩策略;
内存压缩模块,用于按照所述与所述第一进程的运行信息相对应的内存压缩策略,对所述第一进程所占用的内存进行压缩。
第三方面,本申请实施例提供了一种终端,所述终端包括处理器和存储器,所述存储器存储有至少一条指令,所述指令由所述处理器加载并执行以实现如第一方面所述的内存压缩方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如第一方面所述的内存压缩方法。
本申请实施例提供的技术方案可以带来的有益效果至少包括:
通过提供一种主动对后台进程的应用程序对应的进程进行内存压缩的措施,对于在后台运行的应用程序的进程,终端根据该进程在某一时段的运行信息来制定相应的内存压缩策略,并根据该内存压缩策略对该进程所占用的内存进行压缩,能够及时释放出更多的可用内存,保证终端的可用内存始终处于充足状态,进而提高终端的运行效率。
附图说明
图1是本申请一个示例性实施例示出的内存压缩方法的流程图;
图2是本申请一个示例性实施例示出的内存压缩的示意图;
图3是本申请另一个示例性实施例示出的内存压缩方法的流程图;
图4是本申请另一个示例性实施例示出的内存压缩方法的流程图;
图5是本申请另一个示例性实施例示出的内存压缩的示意图;
图6是本申请一个示例性实施例示出的内存压缩条件检测的示意图;
图7是本申请另一个示例性实施例示出的内存压缩的示意图;
图8是本申请一个示例性实施例示出的内存压缩装置的结构框图;
图9是本申请一个示例性实施例示出的终端的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
相关技术中,终端在监测到可用内存小于预设阈值时发起内存压缩流程,该情况下,内存压缩的时机较为滞后,不能及时释放出更多的可用内存,导致终端的运行效率低下。
针对相关技术存在的问题,本申请实施例提供了一种主动对后台进程的应用程序对应的进程进行内存压缩的措施,通过对于在后台运行的应用程序的进程,终端根据该进程在某一时段的运行信息来制定相应的内存压缩策略,并根据该内存压缩策略对该进程所占用的内存进行压缩,能够及时释放出更多的可用内存,保证终端的可用内存始终处于充足状态,进而提高终端的运行效率。
在本申请实施例中,各步骤的执行主体可以是终端。可选地,终端可以是智能手机、平板电脑等。终端包括应用层、框架层和内核层。应用层包括压缩决策模块,压缩决策模块用于决定内存压缩功能是否开启状态,其中,压缩决策模块可以结合终端的物理内存、内存更新服务(ROM Update Service,RUS)的开关、特征(Feature)以及zram可用大小等四个因素来确定是否将内存压缩功能切换至打开状态。框架层包括活动管理服务(ActivityManageService)以及系统服务(System Service),上述活动管理服务以及系统服务用于获取进程的相关信息(例如运行信息、预测信息),并向压缩决策模块提供上述相关信息,以便压缩决策模块制定内存压缩策略。内核层包括内存压缩进程,该内存压缩进程用于基于制定出的内存压缩策略执行内存压缩。该内存压缩进程可以是proc/process_reclaim。
请参考图1,其示出了本申请一个实施例示出的内存压缩方法的流程图。该方法包括:
步骤101,获取第一进程的运行信息。
第一进程是指在后台运行的任一应用程序对应的进程。第一进程的运行信息用于描述第一进程在目标时段内的运行状态。可选地,第一进程的运行信息包括第一进程在目标时段内的调度信息,该调度信息包括第一进程被中央处理单元CPU调度的次数和/或第一进程未被CPU调度的次数。在本申请实施例中,仅以调度信息包括第一进程未被CPU调度的次数为例进行说明。
在本申请实施例中,目标时段由终端动态设定。可选地,目标时段是指当前时间戳与最近一次获取第一进程的运行信息的时间戳之间的时段。例如,终端每隔5分钟获取第一进程的运行信息,当前时间戳为9:50分,最近一次获取第一进程的运行信息的时间戳为9:45分,则目标时段为9:45-9:50。
当终端第一次获取第一进程的运行信息时,目标时段是指当前时间戳与第一进程对应的应用程序切换至后台运行的切换时间戳之间的时段。例如,当前时间戳为9:50分,切换时间戳为9:47分,则目标时段为9:47-9:50。
进一步地,终端设定检测周期,若当前时间戳与切换时间戳之间的时间长度大于或等于一个检测周期,则目标时段为当前时间戳与切换时间戳之间的时段;若当前时间戳与切换时间戳之间的时间长度小于一个检测周期,则本次不获取第一进程的运行信息。例如,一个检测周期为5分钟,当前时间戳为9:50,若切换时间戳为9:43分,当前时间戳与切换时间戳之间的时间长度大于一个检测周期,则目标时段为9:43-9:50;若切换时间戳为9:47分,当前时间戳与切换时间戳之间的时间长度小于一个检测周期,则本次不获取第一进程的运行信息。
可选地,终端每隔预设时间获取第一进程的运行信息。此处的预设时间可也即是终端设定的检测周期。在一种可能的实现方式中,终端在监测出存在后台运行的应用程序时,每隔预设时间获取第一进程的运行信息。在另一种可能的实现方式中,终端在监测出后台运行的应用程序的数量超过预设数量时,每隔预设时间获取第一进程的运行信息。在又一种可能的实现方式中,终端在监测到后台运行的应用程序对应的进程所占用的内存超过预设阈值时,每隔预设时间获取第一进程的运行信息。上述预设数量、预设阈值均可以根据实际需求设定,本申请实施例对此不作限定。
可选地,在获取第一进程的运行信息之前,终端先检测内存压缩功能开关是否处于开启状态,若内存压缩功能开关处于开启状态时,则执行上述每隔预设时间获取第一进程的运行信息的步骤,若内存压缩功能开关不处于开启状态,则不执行获取第一进程的运行信息的步骤。
步骤102,获取与运行信息相对应的内存压缩策略。
内存压缩策略包括压缩指示信息,该压缩指示信息用于指示是否对第一进程所占用的内存进行压缩。
可选地,该内存压缩策略还包括压缩率,该压缩率可以由终端默认设定,也可以由终端根据第一进程的运行信息动态确定,还可以由用户自定义设定,本申请实施例对此不作限定。例如,压缩率与进程未被CPU调度的次数呈负相关关系。也即,进程未被CPU调度的次数越多,则压缩率越低,进程未被CPU调度的次数越少,则压缩率越高。可选地,该内存压缩策略还包括内存压缩类型。内存压缩类型可以是inactive、inactive_file、inactive_anon中的任意一种。
可选地,终端保存有不同运行信息与不同压缩策略之间的对应关系,终端在获取到第一进程的运行信息后,查找上述对应关系,即可获取与第一进程的运行信息相对应的内存压缩策略。
步骤103,按照与第一进程的运行信息相对应的内存压缩策略,对第一进程所占用的内存进行压缩。
终端在确定出与第一进程的运行信息相对应的内存压缩策略后,按照该确定出的内存压缩策略对第一进程所占用的内存进行压缩,以增大终端中的可用内存容量,避免用内存容量不足所导致的终端的响应速度变慢,甚至卡顿的情况发生。
在一个具体的例子中,结合参考图2,其示出了本申请一个实施例提供的对第一进程进行压缩的示意图。在应用层中,当某一应用程序切换至后台运行运行时,该应用程序的包名被添加至后台应用列表,之后框架层的系统服务向应用层提供该应用程序对应的进程的CPU调度次数,以供应用层的压缩决策模块来制定相应的内存压缩策略,之后由框架层的内存压缩进程执行内存压缩流程。
可选地,终端在对第一进程所占用的内存进行压缩之前,还包括:检测第一进程是否是白名单中的进程。若第一进程不是白名单中的进程,则执行对第一进程所占用的内存进行压缩的步骤。若第一进程不是白名单中的进程,则不执行对第一进程所占用的内存的步骤。其中,白名单中包括无需进行内存压缩的进程的进程标识。白名单可以由终端默认设定,也可以由用户自定义设定,本申请实施例对此不作限定。
可选地,终端对第一进程所占用的内存进行压缩后,若第一进程对应的应用程序由后台运行切换至前台运行,则对压缩后的第一进程所占用的内存进行解压缩处理。解压缩是压缩的逆过程。在本申请实施例中,通过在进程对应的应用程序切换至前台运行时,及时对压缩后的该进程所占用的内存进行解压缩处理,以提高第一进程的运行效率。
综上所述,本申请实施例提供的技术方案,通过提供一种主动对后台进程的应用程序对应的进程进行内存压缩的措施,对于在后台运行的应用程序的进程,终端根据该进程在某一时段的运行信息来制定相应的内存压缩策略,并根据该内存压缩策略对该进程所占用的内存进行压缩,能够及时释放出更多的可用内存,保证终端的可用内存始终处于充足状态,进而提高终端的运行效率。
请参考图3,其示出了本申请另一个实施例示出的内存压缩方法的流程图。该方法包括如下步骤:
步骤301,获取第一进程的运行信息。
第一进程是指在后台运行的任一应用程序对应的进程。运行信息用于描述第一进程在目标时段内的运行状态。
步骤302,获取第一进程的第一预测信息。
第一预测信息包括预测得到的第一进程处于非活跃状态的持续时长。可选地,终端通过进程预测模型对第一进程进行处理,得到第一进程的第一预测信息。进程预测模型是采用多组样本进程对卷积神经网络(Convolutional Neural Network,CNN)进行训练得到的,多组样本进程中的每组样本进程对应有实际非活跃时长,实际非活跃时长包括第一进程处于非活跃状态的持续时长。
可选地,进程预测模型包括:一个输入层、至少一个隐层、和一个输出层。输入层的输入数据为被标注有实际非活跃时长的样本进程,输出层的输出结果是该样本进程对应的预测信息。样本进程对应的预测信息的确定过程如下:将被标注有实际非活跃时长的样本进程输入至进程预测模型的输入层,由进程预测模型的隐层对上述训练样本进行特征提取,并对提取到的特征进行组合和抽象,最后由输出层输出该样本进程对应的预测信息。另外,在本申请实施例中,对隐层的具体结构不作限定。一般来说,卷积神经网络的层数越多,效果越好但计算时间也会越长,在实际应用中,可结合对系统性能的要求,设计适当层数的卷积神经网络。
进程预测模型的训练过程如下:将被标注有实际非活跃时长的样本进程输入卷积神经网络,由卷积神经网络输出预测信息,将上述进程预测模型输出的预测信息与样本进程对应的实际非活跃时长进行比较,得到计算损失,若计算损失大于预设值,根据该计算损失调节各个隐层的参数,后续重复上述步骤,直至计算损失小于或等于预设值,最后生成进程预测模型。上述预设值可以根据实际需求设定,本申请实施例对此不作限定。
本申请实施例对CNN所采用的网络结构不作限定。另外,训练CNN得到进程预测模型时所采用的算法可以是反向传播算法(Back-Propagation,BP)、更快的区域卷积神经网络(faster Regions with Convolutional Neural Network,faster RCNN)算法等,本申请实施例对此不作限定。
上述多组样本进程,以及每组样本进程对应的实际非活跃时长可以由终端对预设时段内的应用切换习惯进行统计得到。预设时段可以根据实际需求设定,本申请实施例对此不作限定,例如,预设时段为最近半个月。应用切换习惯包括每个进程切换至后台运行的第一时间戳,以及第一时间戳与最近一次切换至前台运行的第二时间戳之间的时间间隔,第二时间戳晚于第一时间戳。
步骤303,获取与运行信息、第一预测信息均对应的内存压缩策略。
在本申请实施例中,终端结合运行信息以及第一预测信息两方面的内容来确定是否第一进程对应的内存压缩策略,可以使得制定出的内存压缩策略更为合理,更符合终端的实际运行情况。
可选地,终端保存有不同运行信息、不同预测信息以及不同内存压缩策略之间的对应关系,终端在获取到第一进程的运行信息、第一进程的第一预测信息后,查询上述对应关系,即得到与运行信息、第一预测信息均对应的内存压缩策略。
例如,当第一进程的运行信息用于指示第一进程在一个检测周期内未被调度时,且第一预测信息用于指示预测得到的第一进程处于非活跃状态的持续时长为30分钟,则确定需要对第一进程所占用的内存进行重度压缩。再例如,当第一进程的运行信息用于指示第一进程在一个检测周期内未被调度的次数为3次时,且第一预测信息用于指示预测得到的第一进程处于非活跃状态的持续时长为15分钟,则确定需要对第一进程所占用的内存进行轻度压缩。重度压缩对应的压缩率小于轻度压缩对应的压缩率。
步骤304,按照与运行信息、第一预测信息均对应的内存压缩策略,对第一进程所占用的内存进行压缩。
终端在确定出与运行信息、第一预测信息均对应的内存压缩策略,按照该确定出的内存压缩策略对第一进程所占用的内存进行压缩,以增大终端中的可用内存容量,避免用内存容量不足所导致的终端的响应速度变慢,甚至卡顿的情况发生。
综上所述,本申请实施例提供的技术方案,还通过进程预测模型获取该进程的预测非活跃时长,并结合该预测非活跃时长以及运行你信息等两方面内容来制定内存压缩策略,可以使确定出的内存压缩策略更为合理,更加符合终端的实际运行情况。
在一个具体的例子中,结合参考图4,其使出了本申请一个实施例示出的内存压缩方法的流程图。该方法可以包括如下步骤:
步骤401,检测内存压缩功能开关是否处于打开状态。
若内存压缩功能开关处于打开状态,则执行步骤402;若内存压缩功能开关不处于打开状态,则结束流程。
步骤402,开启后台应用检查线程。
步骤403,根据检测周期确定检测时间点。
步骤404,检测时间点到达时,获取后台应用列表。
后台应用列表包括在后台运行的全部应用程序。在本申请实施例中,终端在某一应用程序由前台运行切换至后台运行时,将该应用程序添加至后台应用列表。具体地,终端可以将该应用程序的包名以及该应用程序对应的进程的进程标识对应添加至后台应用列表。
步骤405,遍历后台应用列表。
步骤406,对于当前遍历的应用程序,检测当前时间戳与应用切换至后台运行的时间戳之间的时间间隔是否大于检测周期。
若当前时间戳与应用切换至后台运行的时间戳之间的时间间隔大于检测周期,则执行步骤407,若当前时间戳与应用切换至后台运行的时间戳之间的时间间隔小于检测周期,则执行步骤405。
步骤407,检测该应用程序对应的进程的进程标识与包名是否与后台应用列表中的一致。
由于进程是可以复用的,也即,一个进程的进程标识可以对应多个应用程序。为了避免内存压缩的对象发生错误,则先检测该应用程序对应的进程的进程标识与包名是否与后台应用列表中的一致。若该应用程序对应的进程的进程标识与包名是否与后台应用列表中的一致,则执行步骤408;若该应用程序对应的进程的进程标识与包名是否与后台应用列表中的不一致,则将该应用程序从后台应用列表中移除。
步骤408,获取该应用程序对应的进程的运行信息。
步骤409,检测进程的运行信息是否满足压缩条件。
例如,压缩条件可以是CPU调度次数大于或等于k次,且k次CPU调度次数变化均值小于预设阈值,k和预设阈值都可以根据实际需求设定,本申请实施例对此不作限定。
若运行信息满足压缩条件,则执行步骤410,若运行信息不满足压缩条件,则执行步骤411。
步骤410,执行内存压缩流程。
步骤411,检测遍历是否完成。
若遍历完成,则从步骤403重新开始执行,若遍历未完成,则从步骤405重新开始执行。
在上文实施例中介绍了对后台运行的应用程序对应的进程进行内存压缩,下面将对非后台运行的应用程序对应的进程进行内存压缩的情况进行介绍。
在一种可能的实现方式中,在基于图1或图2所示实施例提供的一个可选实施例中,该内存压缩方法还包括如下步骤:
步骤501,当终端监测到灭屏事件发生时,获取第二进程的第二预测信息。
灭屏事件是指终端屏幕熄灭的事件。当终端发生灭屏事件时,其会对外发送灭屏广播,因此可以通过灭屏广播来监测是否发生灭屏事件。
第二进程为除第一进程之外的其它进程。第二预测信息包括预测得到的第二进程进入非活跃状态的时间节点,以及预测得到的第二进程处于非活跃状态的持续时长。
可选地,终端通过进程预测模型对第二进程进行处理,得到第二进程的第二预测信息。对进程预测模型的相关解释说明可以参考步骤202,此处不再赘述。
步骤502,当第二进程的第二预测信息满足内存压缩条件时,对第二进程所占用的内存进行压缩。
内存压缩条件可以由终端设定,也可以由用户自定义设定,本申请实施例对此不作限定。当第二进程的第二预测信息不满足内存压缩条件时,则不执行对第二进程所占用的内存进行压缩的步骤。
在一个具体的例子中,结合参考图5,其示出了本申请另一个实施例示出的内存压缩的示意图。灭屏广播被发送至应用层,应用层的压缩决策模块基于物理内存,RUS的开关、特征以及zram可用大小来确定内存压缩功能是否处于打开状态,之后框架层的活动管理服务运行进程,并向压缩决策模型提供进程的预测信息,压缩决策模块根据进程的预测信息以及白名单确定内存压缩策略,最后由内核层的内存压缩进程执行内存压缩流程。
下面对终端检测第二进程的第二预测信息是否满足内存压缩条件的流程进行说明,该流程包括如下步骤:
1、获取灭屏事件发生时的灭屏时间戳。
2、检测灭屏时间戳是否处于预测非活跃时段中的指定时段。
指定时段的起始时间戳大于预测非活跃时段的起始时间戳,且与预测非活跃时段的起始时间戳之间的差值大于预设阈值。预设阈值可以根据实际需求设定,本申请实施例对此不作限定。示例性地,预设阈值为5分钟。指定时间段的结束时间戳小于或等于预测非活跃时段的结束时间戳。
若灭屏时间戳处于预测非活跃时段中的指定时段,则确定第二进程的预测非活跃信息满足内存压缩条件。若灭屏时间戳不处于预测非活跃时段中的指定时段,则确定第二进程的预测非活跃信息不满足内存压缩条件。
结合参考图6,其示出了本申请一个实施例示出的内存压缩条件检测的示意图。预测非活跃时段的起始时间戳P与结束时间戳Q之间的时段为预测非活跃时段,指定时段的起始时间戳M大于预测非活跃时段的起始时间戳P,指定时段的结束时间戳N与预测非活跃时段的结束时间戳Q重合,灭屏事件发生时的灭屏时间戳T处于指定时段,该进程满足内存压缩条件。
可选地,终端在对第二进程所占用的内存进行压缩之前,还包括:检测第二进程是否是白名单中的进程。若第二进程不是白名单中的进程,则执行对第二进程所占用的内存进行压缩的步骤。若第二进程不是白名单中的进程,则不执行对第二进程所占用的内存的步骤。其中,白名单中包括无需进行内存压缩的进程的进程标识。
可选地,终端对第二进程所占用的内存进行压缩之后,若第二进程的预测非活跃时段结束时,对压缩后的第二进程所占用的内存进行解压缩处理。在本申请实施例中,通过在进程的预测非活跃时段结束时,及时对压缩后的该进程所占用的内存进行解压缩处理,提高第二进程的运行效率。
综上所述,本申请实施例提供的技术方案,通过在监测到灭屏事件发生时,获取在后台运行的应用程序对应的进程之外的其它进程的预测信息,并根据该预测信息来确定是否需要对该类进程进行内存压缩,能够及时释放出更多的可用内存,保证终端的可用内存始终处于充足状态,进而提高终端的运行效率。
在本申请实施例中,终端还可以在处于开机场景时对各个正在运行的进程进行内存压缩,以提供更多的内存空间余量以使得终端可以更流畅地运行。当终端发生开机事件时,其会对外发送开机广播,因此可以通过开机广播来监测是否发生灭屏事件。
具体地,终端在监测到开机事件发生时,检测内存压缩功能是否处于开启状态,若内存压缩功能处于开启状态,则检测第三进程是否处于白名单中,若第三进程不处于白名单中,则对第三进程所占用的内存进行压缩,若第三进程处于白名单中,则不对第三进程所占用的内存进行压缩。第三进程是正在运行的任一进程。白名单包括无需进行内存压缩的进程的进程标识。
在一个具体的例子中,请参考图7,其示出了本申请另一个实施例示出的内存压缩的示意图。开机广播被发送至应用层,应用层的压缩决策模块基于物理内存,RUS的开关、特征以及zram可用大小来确定内存压缩功能是否处于打开状态,之后框架层的活动管理服务运行进程,压缩决策模块根据白名单确定内存压缩策略,最后由内核层的内存压缩进程执行内存压缩流程。
综上所述,本申请实施例提供的技术方案,通过在监测到开机事件发生时,根据白名单来确定是否需要对正在运行的进程进行内存压缩,能够及时释放出更多的可用内存,保证终端的可用内存始终处于充足状态,进而提高终端的运行效果。
以下为本申请装置实施例,对于装置实施例中未详细阐述的部分,可以参考上述方法实施例中公开的技术细节。
请参考图8,其示出了本申请一个示例性实施例提供的内存压缩装置的框图。该内存优化装置可以通过软件、硬件或者两者的组合实现成为终端的全部或一部分。该内存压缩装置包括:
第一获取模块801,用于获取第一进程的运行信息,所述第一进程是指在后台运行的任一应用程序对应的进程,所述运行信息用于描述所述第一进程在目标时段内的运行状态。
策略获取模块802,用于获取与所述运行信息相对应的内存压缩策略。
内存压缩模块803,用于按照所述与所述第一进程的运行信息相对应的内存压缩策略,对所述第一进程所占用的内存进行压缩。
综上所述,本申请实施例提供的技术方案,通过对于在后台运行的应用程序的进程,终端根据该进程在某一时段的运行信息来制定相应的内存压缩策略,并根据该内存压缩策略对该进程所占用的内存进行压缩;由于本申请实施例提供了一种主动对后台进程的应用程序对应的进程进行内存压缩的措施,能够及时释放出更多的可用内存,保证终端的可用内存始终处于充足状态,进而提高终端的运行效率。
在基于图8所示实施例提供的一个可选实施例中,所述装置还包括:第二获取模块(图中未示出)。
所述第二获取模块,用于获取所述第一进程的第一预测信息,所述第一预测信息包括预测得到的所述第一进程处于所述非活跃状态的持续时长。
所述策略获取模块802,用于获取与所述运行信息、所述第一预测信息均对应的内存压缩策略。
所述内存压缩模块803,用于按照所述与所述运行信息、所述第一预测信息均对应的内存压缩策略,对所述第一进程所占用的内存进行压缩。
可选地,所述第二获取模块,用于通过进程预测模型对所述第一进程进行处理,得到所述第一进程的第一预测信息;其中,所述进程预测模型是指采用多组样本进程对卷积神经网络CNN进行训练得到的,所述多组样本进程中的每组样本进程对应有实际非活跃时长,所述实际非活跃时长包括所述第一进程处于所述非活跃状态的持续时长。
在基于图8所示实施例提供的一个可选实施例中,所述装置还包括:第三获取模块(图8未示出)。
第三获取模块,用于当终端监测到灭屏事件发生时,获取第二进程的第二预测信息;其中,所述第二进程为除第一进程之外的其它进程,所述第二预测信息包括预测得到的所述第二进程进入非活跃状态的时间节点,以及预测得到的所述第二进程处于所述非活跃状态的持续时长。
所述内存压缩模块,用于当所述第二进程的预测非活跃信息满足内存压缩条件时,对所述第二进程所占用的内存进行压缩。
可选地,所述装置还包括:条件检测模块(图8未示出)。
所述条件检测模块,用于:
获取所述灭屏事件发生时的灭屏时间戳;
检测所述灭屏时间戳是否处于预测非活跃时段中的指定时段,所述指定时段的起始时间戳大于所述预测非活跃时段的起始时间戳,且与所述预测非活跃时段的起始时间戳之间的差值大于预设阈值,所述指定时间段的结束时间戳小于或等于所述预测非活跃时段的结束时间戳;
若所述灭屏时间戳处于所述预测非活跃时段中的指定时段,则确定所述第二进程的预测非活跃信息满足所述内存压缩条件;
若所述灭屏时间戳不处于所述预测非活跃时段中的指定时段,则确定所述第二进程的预测非活跃信息不满足所述内存压缩条件。
可选地,所述装置还包括:解压缩模块(图8未示出)。
解压缩模块,用于当所述第二进程的预测非活跃时段结束时,对压缩后的所述第二进程所占用的内存进行解压缩处理。
在基于图8所示实施例提供的一个可选实施例中,
所述解压缩模块,还用于当所述第一进程对应的应用程序切换至前台运行时,对压缩后的所述第一进程所占用的内存进行解压缩处理。
在基于图8所示实施例提供的一个可选实施例中,所述装置还包括:白名单检测模块(图8未示出)。
所述白名单检测模块,用于检测所述第一进程是否为白名单中的进程。
所述内存压缩模块,用于当所述第一进程不为所述白名单中的进程,执行所述按照所述与所述第一进程的运行信息相对应的内存压缩策略,对所述第一进程所占用的内存进行压缩的步骤。
需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
参考图9,其示出了本申请一个示例性实施例提供的终端的结构方框图。本申请中的终端可以包括一个或多个如下部件:处理器910和存储器920。
处理器910可以包括一个或者多个处理核心。处理器910利用各种接口和线路连接整个终端内的各个部分,通过运行或执行存储在存储器920内的指令、程序、代码集或指令集,以及调用存储在存储器920内的数据,执行终端的各种功能和处理数据。可选地,处理器910可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器910可集成中央处理器(CentralProcessing Unit,CPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统和应用程序等;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器910中,单独通过一块芯片进行实现。
可选地,处理器910执行存储器920中的程序指令时实现下上述各个方法实施例提供的内存压缩方法。
存储器920可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory,ROM)。可选地,该存储器920包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器920可用于存储指令、程序、代码、代码集或指令集。存储器920可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令、用于实现上述各个方法实施例的指令等;存储数据区可存储根据终端的使用所创建的数据等。
上述终端的结构仅是示意性的,在实际实现时,终端可以包括更多或更少的组件,比如:摄像头等,本实施例对此不作限定。
本领域技术人员可以理解,图9中示出的结构并不构成对终端900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述至少一条指令由终端的处理器加载并执行以实现上述方法实施例中的内存压缩方法。
可选地,上述计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于实现上述方法实施例中提供的内存压缩方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本文中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种内存压缩方法,其特征在于,所述方法包括:
获取第一进程的运行信息,所述第一进程是指在后台运行的任一应用程序对应的进程,所述运行信息用于描述所述第一进程在目标时段内的运行状态;
通过进程预测模型对所述第一进程进行处理,得到所述第一进程的第一预测信息,所述第一预测信息包括预测得到的所述第一进程处于非活跃状态的持续时长,所述进程预测模型是指采用多组标注有实际非活跃时长的样本进程对卷积神经网络进行训练得到的,所述实际非活跃时长包括样本进程处于所述非活跃状态的持续时长;
获取与所述运行信息、所述第一预测信息均对应的内存压缩策略;
按照与所述运行信息、所述第一预测信息均对应的内存压缩策略,对所述第一进程所占用的内存进行压缩。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当终端监测到灭屏事件发生时,通过所述进程预测模型对第二进程进行处理,得到所述第二进程的第二预测信息;其中,所述第二进程为除所述第一进程之外的其它进程,所述第二预测信息包括预测得到的所述第二进程进入非活跃状态的时间节点,以及预测得到的所述第二进程处于所述非活跃状态的持续时长;
当所述第二进程的第二预测信息满足内存压缩条件时,对所述第二进程所占用的内存进行压缩。
3.根据权利要求2所述的方法,其特征在于,所述对所述第二进程所占用的内存进行压缩之前,还包括:
获取所述灭屏事件发生时的灭屏时间戳;
检测所述灭屏时间戳是否处于预测非活跃时段中的指定时段,所述指定时段的起始时间戳大于所述预测非活跃时段的起始时间戳,且与所述预测非活跃时段的起始时间戳之间的差值大于预设阈值,所述指定时段的结束时间戳小于或等于所述预测非活跃时段的结束时间戳;
若所述灭屏时间戳处于所述预测非活跃时段中的指定时段,则确定所述第二进程的预测非活跃信息满足所述内存压缩条件;
若所述灭屏时间戳不处于所述预测非活跃时段中的指定时段,则确定所述第二进程的预测非活跃信息不满足所述内存压缩条件。
4.根据权利要求2所述的方法,其特征在于,所述对所述第二进程所占用的内存进行压缩之后,还包括:
当所述第二进程的预测非活跃时段结束时,对压缩后的所述第二进程所占用的内存进行解压缩处理。
5.根据权利要求1所述的方法,其特征在于,当所述第一进程对应的应用程序切换至前台运行时,对压缩后的所述第一进程所占用的内存进行解压缩处理。
6.根据权利要求1所述的方法,其特征在于,所述按照与所述运行信息、所述第一预测信息均对应的内存压缩策略,对所述第一进程所占用的内存进行压缩之前,还包括:
检测所述第一进程是否为白名单中的进程;
当所述第一进程不为所述白名单中的进程,执行所述按照与所述运行信息、所述第一预测信息均对应的内存压缩策略,对所述第一进程所占用的内存进行压缩的步骤。
7.一种内存压缩装置,其特征在于,所述装置包括:
信息获取模块,用于获取第一进程的运行信息,所述第一进程是指在后台运行的任一应用程序对应的进程,所述运行信息用于描述所述第一进程在目标时段内的运行状态;
策略获取模块,用于通过进程预测模型对所述第一进程进行处理,得到所述第一进程的第一预测信息,所述第一预测信息包括预测得到的所述第一进程处于非活跃状态的持续时长,所述进程预测模型是指采用多组标注有实际非活跃时长的样本进程对卷积神经网络进行训练得到的,所述实际非活跃时长包括样本进程处于所述非活跃状态的持续时长;获取与所述运行信息、所述第一预测信息均对应的内存压缩策略;
内存压缩模块,用于按照所述与所述运行信息、所述第一预测信息均对应的内存压缩策略,对所述第一进程所占用的内存进行压缩。
8.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至6任一项所述的内存压缩方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至6任一项所述的内存压缩方法。
10.一种计算机程序产品,当所述计算机程序产品被执行时,用于实现如权利要求1至6任一项所述的内存压缩方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010125681.XA CN111367828B (zh) | 2020-02-27 | 2020-02-27 | 内存压缩方法、装置、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010125681.XA CN111367828B (zh) | 2020-02-27 | 2020-02-27 | 内存压缩方法、装置、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111367828A CN111367828A (zh) | 2020-07-03 |
CN111367828B true CN111367828B (zh) | 2023-10-20 |
Family
ID=71204194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010125681.XA Active CN111367828B (zh) | 2020-02-27 | 2020-02-27 | 内存压缩方法、装置、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111367828B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113886060B (zh) * | 2021-05-28 | 2022-09-23 | 荣耀终端有限公司 | 压缩内存的方法和装置 |
CN113722087B (zh) * | 2021-06-10 | 2023-01-31 | 荣耀终端有限公司 | 虚拟内存管理方法和电子设备 |
CN113610348A (zh) * | 2021-07-06 | 2021-11-05 | 安徽海博智能科技有限责任公司 | 一种露天矿山矿卡调度方法、系统、装置及存储介质 |
CN118733477A (zh) * | 2023-03-30 | 2024-10-01 | 北京罗克维尔斯科技有限公司 | 一种车机系统进程控制方法、装置、电子设备及车辆 |
CN116719648B (zh) * | 2023-08-10 | 2023-11-07 | 泰山学院 | 一种用于计算机系统的数据管理方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220076A (zh) * | 2016-09-27 | 2017-09-29 | 华为技术有限公司 | 一种内存回收方法及装置 |
WO2019071610A1 (zh) * | 2017-10-13 | 2019-04-18 | 华为技术有限公司 | 一种压缩和解压处理器所占内存的方法及装置 |
CN109783446A (zh) * | 2019-01-04 | 2019-05-21 | 北京百度网讯科技有限公司 | 用于存储数据的方法和装置 |
CN109891390A (zh) * | 2017-08-11 | 2019-06-14 | 华为技术有限公司 | 一种应用切换方法及装置 |
CN110457235A (zh) * | 2019-08-20 | 2019-11-15 | Oppo广东移动通信有限公司 | 内存压缩方法、装置、终端及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8484405B2 (en) * | 2010-07-13 | 2013-07-09 | Vmware, Inc. | Memory compression policies |
-
2020
- 2020-02-27 CN CN202010125681.XA patent/CN111367828B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220076A (zh) * | 2016-09-27 | 2017-09-29 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN109891390A (zh) * | 2017-08-11 | 2019-06-14 | 华为技术有限公司 | 一种应用切换方法及装置 |
WO2019071610A1 (zh) * | 2017-10-13 | 2019-04-18 | 华为技术有限公司 | 一种压缩和解压处理器所占内存的方法及装置 |
CN109783446A (zh) * | 2019-01-04 | 2019-05-21 | 北京百度网讯科技有限公司 | 用于存储数据的方法和装置 |
CN110457235A (zh) * | 2019-08-20 | 2019-11-15 | Oppo广东移动通信有限公司 | 内存压缩方法、装置、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111367828A (zh) | 2020-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111367828B (zh) | 内存压缩方法、装置、终端及存储介质 | |
CN107479951B (zh) | 进程管控方法、装置、存储介质及电子设备 | |
CN107832100B (zh) | 一种apk插件的加载方法及其终端 | |
CN107506240B (zh) | 后台应用程序管控方法、装置、存储介质及电子设备 | |
CN109542512B (zh) | 一种数据处理方法、装置和存储介质 | |
EP1736885A2 (en) | Method for managing a memory in a mobile terminal | |
CN110933178B (zh) | 调整集群系统内的节点配置的方法及服务器 | |
CN110764906A (zh) | 内存回收处理方法、装置、电子设备以及存储介质 | |
CN112163468A (zh) | 基于多线程的图像处理方法及装置 | |
CN117687772B (zh) | 一种算法调度方法及电子设备 | |
CN115220912A (zh) | 系统资源的配置方法、装置、电子设备以及存储介质 | |
CN111045824A (zh) | 应用控制方法、装置、电子设备以及计算机可读介质 | |
CN111273769B (zh) | 一种设备控制方法、装置、电子设备及存储介质 | |
CN112925634A (zh) | 异构资源调度方法和系统 | |
CN114416320A (zh) | 一种任务处理方法、装置、设备以及存储介质 | |
CN107493315B (zh) | 一种行为数据的收集方法、资源服务器及存储介质 | |
CN116700816B (zh) | 一种资源管理方法及电子设备 | |
CN106156210B (zh) | 一种确定应用标识匹配列表的方法和装置 | |
CN115617532B (zh) | 一种目标追踪处理方法、系统及相关装置 | |
CN111338713A (zh) | 一种应用卡顿的处理方法、装置、设备及存储介质 | |
CN113064660A (zh) | 设备控制方法、装置、电子设备及存储介质 | |
CN115082911A (zh) | 一种视频分析方法、装置及视频处理设备 | |
CN114995898A (zh) | 目标对象处理方法、装置以及电子设备 | |
CN109920417B (zh) | 一种语音处理方法、装置、设备和存储介质 | |
CN112927004A (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 |