CN103617129B - 一种内存处理的方法及装置 - Google Patents
一种内存处理的方法及装置 Download PDFInfo
- Publication number
- CN103617129B CN103617129B CN201310684548.8A CN201310684548A CN103617129B CN 103617129 B CN103617129 B CN 103617129B CN 201310684548 A CN201310684548 A CN 201310684548A CN 103617129 B CN103617129 B CN 103617129B
- Authority
- CN
- China
- Prior art keywords
- internal memory
- regulated value
- pid
- value
- process identification
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种内存处理的方法及装置,该方法包括:接收应用程序发送的内存调节值设置指令,该指令中包含有应用程序的进程标识,获取与该进程标识相对应的内存调节值,将该内存调节值的内容设置为负数,将与该进程标识相对应的目标节点设定为所述设置为负数的内存调节值。由于在现有技术中,当内存剩余容量不足以满足新启动的应用程序使用时,***检测各个目标节点的节点值获得对应正在运行的应用程序进程的内存调节值,选择较大的非负整数内存调节值,并释放相应的应用程序占用的内存。本申请提供的方法可将应用程序进程的内存调节值设置为负数值,从而防止***在释放内存的过程中将该应用程序占用的内存释放,保证了应用程序的正常运行。
Description
技术领域
本申请涉及通信技术领域,尤其是一种内存处理的方法及装置。
背景技术
目前,智能设备已成为人们必不可少的通信工具,其在运行过程中需要操作***。目前,Android操作***无疑是目前市场份额最大的操作***之一,该操作***支持多任务,即可以同时运行多个应用程序,例如在浏览网页的时候听歌,或者打电话的时候查看手机短信。程序的运行需要占用内存,然而,基于价格和技术等方面的限制,在智能手机上配置的内存容量普遍偏低,例如大量的中低端机型还是以256MB和512MB为主。
由于内存容量有限,同时运行的多个应用程序会争抢内存资源。为了解决所述问题,Android操作***使用强行释放机制。具体为:依据所有正在运行的应用程序的重要程度,将其内存调节值属性进行不同设置,设置的内容为非负整数值。当出现内存不足的情况时,在所述程序通过读取各个程序在内核中oom_adj节点的值,来获得所述各个进程的内存调节值,并选择内存调节值数值较高的程序,强制进行内存释放。
但应用程序在运行重要进程时,被强制释放内存会导致所述应用程序功能的无法实现。
发明内容
有鉴于此,本申请提供了一种内存处理的方法及装置,以解决现有技术中应用程序在运行重要进程时,被强制释放内存导致的所述应用程序功能的无法实现问题。本申请提供的技术方案如下:
一种内存处理的方法,包括:
接收应用程序发送的内存调节值设置指令,所述指令中包含有所述应用程序的进程标识;
依据所述进程标识,获取与所述进程标识相对应的内存调节值;
将所述内存调节值的内容设置为负数;
将与所述进程标识相对应的目标节点设定为所述设置为负数的内存调节值。
上述方法,优选的,预先设置有应用程序对象,所述应用程序对象中包含有内存调节值;
其中,所述依据所述进程标识,获取与所述进程标识相对应的内存调节值,包括:
依据所述进程标识,获取与所述进程标识相对应的应用程序对象;
在所述应用程序对象中获取与所述进程标识相对应的内存调节值。
上述方法,优选的,在依据所述进程标识,获取与所述进程标识相对应的内存调节值之前,还包括:
依据所述进程标识,判断与所述进程标识相对应的进程是否具备预设调节权限;
若是,执行所述接收应用程序发送的内存调节值设置指令。
上述方法,优选的,在将所述内存调节值的内容设置为负数值之前,还包括:
保存所述内存调节值的内容为其对应的初始内存调节值。
上述方法,优选的,在将所述内存调节值的内容设置为负数值之后,还包括:
记录所述内存调节值为负数值的持续时间;
当所述持续时间达到预设时间段时,将所述内存调节值的内容设置为其对应的初始内存调节值。
本申请还提供了一种内存处理的装置,包括:
指令接收单元,用于接收应用程序发送的内存调节值设置指令,所述指令中包含有所述应用程序的进程标识;
内存调节值获取单元,用于依据所述进程标识,获取与所述进程标识相对应的内存调节值;
第一设置单元,用于将所述内存调节值的内容设置为负数;
第二设置单元,用于将与所述进程标识相对应的目标节点设定为所述设置为负数的内存调节值。
上述装置,优选的,还包括:
第一保存单元,用于预先设置有应用程序对象,所述应用程序对象中包含有内存调节值;
其中:所述获取单元包括:
第一获取子单元,用于依据所述进程标识,获取与所述进程标识相对应的应用程序对象;
第二获取子单元,用于在所述应用程序对象中获取与所述进程标识相对应的内存调节值。
上述装置,优选的,还包括:
判断单元,用于依据所述进程标识,判断与所述进程标识相对应的进程是否具备预设调节权限;
第一结果单元,用于触发所述内存调节值获取单元。
上述装置,优选的,还包括:
内存调节值保存单元,用于保存所述内存调节值的内容为其对应的初始内存调节值。
上述装置,优选的,还包括:
时间记录单元,用于记录所述内存调节值为负数值的持续时间;当所述持续时间达到预设时间段时,触发内存调节值恢复单元;
内存调节值恢复单元,用于将所述内存调节值的内容设置为其对应的初始内存调节值。
由以上的技术方案可知,本申请提供的一种内存处理的方法及装置,该方法包括:接收应用程序发送的内存调节值设置指令,该指令中包含有应用程序的进程标识,获取与该进程标识相对应的内存调节值,将该内存调节值的内容设置为负数,将与该进程标识相对应的目标节点设定为所述设置为负数的内存调节值。由于在现有技术中,当内存剩余容量不足以满足新启动的应用程序使用时,***会检测各个目标节点的节点值以获得各个正在运行的应用程序进程的内存调节值,选择较大的非负整数内存调节值,并释放相应的应用程序占用的内存。本申请提供的方法可将应用程序进程的内存调节值设置为负数值,从而防止***在检测并释放内存的过程中将该应用程序占用的内存释放,保证了应用程序的正常运行。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种内存处理方法实施例一的流程图;
图2为本申请提供的一种内存处理方法实施例二的部分流程图;
图3为本申请提供的一种内存处理方法实施例三的流程图;
图4为本申请提供的一种内存处理方法实施例四的流程图;
图5为本申请提供的一种内存处理装置实施例五的结构示意图;
图6为本申请提供的一种内存处理装置实施例六的部分结构示意图;
图7为本申请提供的一种内存处理装置实施例七的结构示意图;
图8为本申请提供的一种内存处理装置实施例八的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,其示出了本申请提供的一种内存处理方法实施例一的流程图,本实施例可以包括:
步骤101:接收应用程序发送的内存调节值设置指令,所述指令中包含有所述应用程序的进程标识。
所述内存调节值设置指令是由应用程序发送的,即所述应用程序正在运行重要进程时,发送内存调节值设置指令。其中,判断所述应用程序运行重要进程的方法可以是,在应用程序中预先设置进程标识集合,在应用程序运行过程中,实时获取该应用程序各个进程的进程标识,判断所述进程标识是否属于所述进程标识集合中的一个,若是,可确定该应用程序正在运行重要进程,则发出内存调节值设置指令。其中,所述指令中包含有所述应用程序的进程标识。
步骤102:依据所述进程标识,获取与所述进程标识相对应的内存调节值。
解析步骤101中接收到的所述内存调节值设置指令,获取所述调节指令中的进程标识。获取到的所述内存调节值为非负整数值,每一种整数值可以表示一种应用程序进程的状态,例如,请参阅表1,其列举了9种内存调节值及与各自对应的运行状态。
内存调节值 | 运行状态说明 |
0 | 界面可见并且用户正在交互的程序 |
1 | 界面可见的程序 |
2 | 用户可感觉到的程序 |
3 | 界面不可见但占用内存很多的程序 |
4 | 界面不可见并正在执行备份还原操作的程序 |
5 | 界面不可见但正在执行后台服务的程序 |
6 | 界面不可见但是作为桌面的程序 |
7 | 界面不可见但是刚刚离开的上一个程序 |
8 | 界面不可见并且不活动的后台服务程序 |
表1
步骤103:将所述内存调节值的内容设置为负数。
例如,步骤102中获取到的内存调节值为1,将所述内存调节值设置为-1。
步骤104:将与所述进程标识相对应的目标节点设定为所述设置为负数的内存调节值。
所述目标节点为将所述内存调节值生效的节点,例如,Android***中的oom_adj节点。当然,所述目标节点的名字并不限定于此,只要是放置所述进程内存调节值内容的节点都属于本申请的保护范围。
***内核中设置有内存管理模块,用于当新的应用程序启动时,检测***的内存使用情况,当***的内存剩余容量不足以支持所述启动的应用程序时,则根据剩余可用内存的大小,按照内存调节值从大到小的顺序选择应用程序,并强制将相应的应用程序退出,以便释放一部分内存给要启动的应用使用。
需要说明的是,所述内存管理模块检测各个应用程序内存调节值的大小,需要读取所述目标节点上的节点数值。因此,需要将所述目标节点上的节点值设定为所述设置为负数后的内存调节值,从而内存管理模块才能检测到所述应用程序进程的内存调节值大小,即所述内存调节值才能生效。
由以上的技术方案可知,本实施例提供了一种内存处理的方法,该方法通过接收应用程序发送的内存调节值设置指令,该指令中包含有应用程序的进程标识,依据该进程标识,获取与该进程标识相对应的内存调节值,将所述内存调节值的内容设置为负数,并将与所述进程标识相对应的目标节点设定为所述设置为负数的内存调节值。
由于在现有技术中,当内存剩余容量不足以满足新启动的应用程序使用时,***会检测各个目标节点的节点值以获得各个正在运行的应用程序进程的内存调节值,选择较大的非负整数内存调节值,并释放相应的应用程序占用的内存。本申请提供的方法可将应用程序进程的内存调节值设置为负数值,从而防止***在检测并释放内存的过程中将该应用程序占用的内存释放,保证了应用程序的正常运行。
需要说明的是,上述方法不仅可应用于***内置的应用程序,还可以应用于第三方应用程序(非***内置应用程序),如从应用商店下载并安装的应用程序。
请参阅图2,其示出了本申请提供的一种内存处理方法实施例二的部分流程图,在实施例一的基础上,预先设置有应用程序对象,所述应用程序对象中包含有内存调节值,则实施例一中的步骤102可以包括:
步骤201:依据所述进程标识,获取与所述进程标识相对应的应用程序对象。
预先设置有应用程序对象,例如,Android***中的ProcessRecord对象,其记录有与该应用程序进程相关的所有属性,其中包含有内存调节值。依据实施例一中的进程标识,获取与所述进程标识相对应的应用程序对象。当然,所述应用程序对象的名称并不限于此,现有技术中只要是能保存有应用程序进程属性的对象,都属于本申请的保护范围。
步骤202:在所述应用程序对象中获取与所述进程标识相对应的内存调节值。
在***服务中预先设置函数(方法),如在Android***的ActivityManagerService(AMS)***服务进程中预先设置有adjustProcessAdj函数,所述函数用于实现获取进程标识对应的内存调节值,并将所述内存调节值的内容设置为负数值或将所述内存调节值的内容恢复为设置前的0或正整数值。其中,所述函数中的参数reset用于表明是要设置为负数值或将内存调节值进行恢复,例如,当所述reset参数的内容为false时,将所述内存调节值设置为负数值,当所述reset参数的内容为true时,将所述内存调节值恢复为设置前的内容(0或正整数值)。当然,所述函数的名称及所述参数名称并不限于此,现有技术中实现本申请所述函数功能但以其他任意名称进行命名的函数都属于本申请的保护范围。
获取与所述进程标识对应的内存调节值,需要对Android***预先进行设置。设置的内容是:在Android***为应用程序提供的调用***服务的接口ActivityManager中,预先增加修改内存调节值的函数(方法),所述函数的名称与所述***服务中的函数名称相同。进行上述设置后,获取内存调节值的过程可以是,向所述ActivityManager发送内存调节值设置指令,所述ActivityManager将所述内存调节指令再发送给所述AMS中的adjustProcessAdj函数,完成将所述进程标识对应的内存调节值设置为负数值,如,-1。
请参阅图3,其示出了本申请提供的一种内存处理方法实施例三的流程图,本实施例可以包括:
步骤301:依据所述进程标识,判断与所述进程标识相对应的进程是否具备预设调节权限;若是,执行实施例一中的步骤102。
接收到内存调节指令,并对内存调节值设置之前,判断该应用程序进程是否具备调节内存调节值的权限。所述判断方法可以是,预先设置有字符串,用于表示包含有所述字符串的应用程序才具备调节内存调节值的权限,当接收到内存调节指令时,获取与所述内存调节指令相对应的应用程序,检测所述应用程序中是否包含有与所述预先设置的字符串相同的字符串内容,如果有,说明所述应用程序具备调节进程内存调节值的权限。
本实施的其他步骤与实施例一中的步骤101至104相同,相关说明请参阅实施例一,在此不作赘述。
本实施例在进行内存调节值设置之前,对接收到的内存调节指令相对应的应用程序进行权限判断,从而防止某些非法应用程序通过更改内存调节值来常驻内存,提供了***的安全性。
请参阅图4,其示出了本申请提供的一种内存处理方法实施例四的流程图,本实施例可以包括:
步骤401:接收应用程序发送的内存调节值设置指令,所述指令中包含有所述应用程序的进程标识。
步骤402:依据所述进程标识,判断与所述进程标识相对应的进程是否具备预设调节权限;若是,执行步骤403。
步骤403:依据所述进程标识,获取与所述进程标识相对应的内存调节值。
步骤404:保存所述内存调节值的内容为其对应的初始内存调节值。
预先设置有初始内存调节值属性,用于保存调节前的相对应的内存调节值。例如,当前内存调节值的内容为1,将与该内存调节值对应的初始内存调节值的内容设置为1,用于保存所述设置前的内存调节值。
步骤405:将所述内存调节值的内容设置为负数,并同时记录所述内存调节值为负数值的持续时间。
当所述内存调节值设置为负数的同时,开始对所述初始内存调节值进行计时,即记录所述内存调节值为负数值的持续时间段。例如,将所述内存调节值设置为-1,并同时开始计时。
步骤406:将与所述进程标识相对应的目标节点设定为所述设置为负数的内存调节值。
步骤407:当所述持续时间达到预设时间段时,将所述内存调节值的内容设置为其对应的初始内存调节值。
预先设置有某一时间段,例如2分钟。监测所述持续时间段是否达到了预设的时间段,当达到时,将所述内存调节值的内容恢复为调节前的内存调节值。即获取与所述内存调节值相对应的初始内存调节值如1,将所述内存调节值如-1设置为所述初始内存调节值如1。
需要说明的是,其他步骤请参阅上述各个实施例的相关内容,在此不作赘述。
需要说明的是,所述步骤407可以通过实施例二中步骤202中的adjustProcessAdj函数实现,实现方式为,向所述函数发送内容为true的reset参数,该函数实现将内存调节值调节为设置为负数前的内存调节值(0或正整数值)。通过本申请提供的方法,可以实现在应用程序运行重要进程的时候,将所述应用程序进程的内存调节值设置为负数值,避免被强制释放内存,同时,可实现对所述应用程序占用内存的状态进行计时,使占用内存达到一个时间段的应用程序重新加入被***选择释放内存的程序集合中,避免过多应用程序长时间占用内存,导致内存无法释放的问题。
请参阅图5,其示出了本申请提供的一种内存处理装置实施例五的结构示意图,本实施例可以包括:指令接收单元501、内存调节值获取单元502、第一设置单元503及第二设置单元504。其中:
所述指令接收单元501,用于接收应用程序发送的内存调节值设置指令,所述指令中包含有所述应用程序的进程标识。
所述内存调节值设置指令是由应用程序发送的,即所述应用程序正在运行重要进程时,发送内存调节值设置指令。其中,判断所述应用程序运行重要进程的方法可以是,在应用程序中预先设置进程标识集合,在应用程序运行过程中,实时获取该应用程序各个进程的进程标识,判断所述进程标识是否属于所述进程标识集合中的一个,若是,可确定该应用程序正在运行重要进程,则发出内存调节值设置指令。其中,所述指令中包含有所述应用程序的进程标识。
所述内存调节值获取单元502,用于依据所述进程标识,获取与所述进程标识相对应的内存调节值。
所述指令接收单元501接收到的所述内存调节值设置指令,所述内存调节值获取单元502获取所述调节指令中的进程标识。获取到的所述内存调节值为非负整数值,每一种整数值可以表示一种应用程序进程的状态,例如,请参阅表1,其列举了9种内存调节值及与各自对应的运行状态。
所述第一设置单元503,用于将所述内存调节值的内容设置为负数。
例如,所述内存调节值获取单元502获取到的内存调节值为1,将所述内存调节值设置为-1。
所述第二设置单元504,用于将与所述进程标识相对应的目标节点设定为所述设置为负数的内存调节值。
所述目标节点为将所述内存调节值生效的节点,例如,Android***中的oom_adj节点。当然,所述目标节点的名字并不限定于此,只要是放置所述进程内存调节值内容的节点都属于本申请的保护范围。
***内核中设置有内存管理模块,用于当新的应用程序启动时,检测***的内存使用情况,当***的内存剩余容量不足以支持所述启动的应用程序时,则根据剩余可用内存的大小,按照内存调节值从大到小的顺序选择应用程序,并强制将相应的应用程序退出,以便释放一部分内存给要启动的应用使用。
需要说明的是,所述内存管理模块检测各个应用程序内存调节值的大小,需要读取所述目标节点上的节点数值。因此,需要所述第二设置单元504将所述目标节点上的节点值设定为所述设置为负数后的内存调节值,从而内存管理模块才能检测到所述应用程序进程的内存调节值大小,即所述内存调节值才能生效。
由以上的技术方案可知,本实施例提供了一种内存处理的装置,该装置通过接收应用程序发送的内存调节值设置指令,该指令中包含有应用程序的进程标识,依据该进程标识,获取与该进程标识相对应的内存调节值,将所述内存调节值的内容设置为负数,并将与所述进程标识相对应的目标节点设定为所述设置为负数的内存调节值。
由于在现有技术中,当内存剩余容量不足以满足新启动的应用程序使用时,***会检测各个目标节点的节点值以获得各个正在应用程序进程的内存调节值,选择较大的非负整数内存调节值,并释放相应的应用程序占用的内存。本申请提供的方法可将应用程序进程的内存调节值设置为负数值,从而防止***在检测并释放内存的过程中将该应用程序占用的内存释放,保证了应用程序的正常运行。
需要说明的是,上述装置不仅可应用于***内置的应用程序,还可以应用于第三方应用程序(非***内置应用程序),如从应用商店下载并安装的应用程序。
请参阅图6,其示出了本申请提供的一种内存处理装置实施例六的部分结构示意图,在实施例五的基础上,还包括:第一保存单601,用于预先设置有应用程序对象,所述应用程序对象中包含有内存调节值,则实施例五中的内存调节值获取单元502可以包括:第一获取子单元602及第二获取子单元603。其中:
所述第一获取子单元602,用于依据所述进程标识,获取与所述进程标识相对应的应用程序对象。
所述第一保存单601中预先设置有应用程序对象,例如,Android***中的ProcessRecord对象,其记录有与该应用程序进程相关的所有属性,其中包含有内存调节值。所述第一获取子单元602与所述第一保存单601相连,依据实施例五中内存调节值获取单元502获取到的进程标识,在所述第一保存单601中获取与所述进程标识相对应的应用程序对象。当然,所述应用程序对象的名称并不限于此,现有技术中只要是能保存有应用程序进程属性的对象,都属于本申请的保护范围。
所述第二获取子单元603,用于在所述应用程序对象中获取与所述进程标识相对应的内存调节值。
在***服务中预先设置函数(方法),如在Android***的ActivityManagerService(AMS)***服务进程中预先设置有adjustProcessAdj函数,所述函数用于实现获取进程标识对应的内存调节值,并将所述内存调节值的内容设置为负数值或将所述内存调节值的内容恢复为设置前的0或正整数值。其中,所述函数中的参数reset用于表明是要设置为负数值或将内存调节值进行恢复,例如,当所述reset参数的内容为false时,将所述内存调节值设置为负数值,当所述reset参数的内容为ture时,将所述内存调节值恢复为设置前的内容(0或正整数值)。
所述第二获取子单元603的功能可以利用所述adjustProcessAdj函数实现。当然,所述函数的名称及所述参数名称并不限于此,现有技术中实现本申请所述函数功能但以其他任意名称进行命名的函数都属于本申请的保护范围。
当然,获取与所述进程标识对应的内存调节值,需要对Android***预先进行设置。设置的内容是:在Android***为应用程序提供的调用***服务的接口ActivityManager中,预先增加修改内存调节值的函数(方法),所述函数的名称与所述***服务中的函数名称相同。进行上述设置后,所述第二获取子单元603获取内存调节值的过程可以是,向所述ActivityManager发送内存调节值设置指令,所述ActivityManager将所述内存调节指令再发送给所述AMS中的adjustProcessAdj函数,完成将所述进程标识对应的内存调节值设置为负数值,如,-1。
请参阅图7,其示出了本申请提供的一种内存处理装置实施例七的结构示意图,本实施例可以包括:
判断单元701,用于依据所述进程标识,判断与所述进程标识相对应的进程是否具备预设调节权限;若是,触发所述内存调节值获取单元502。
所述指令接收单元501接收到内存调节指令,在所述第一设置单元503对内存调节值设置之前,所述判断单元701判断该应用程序进程是否具备调节内存调节值的权限。所述判断方法可以是,预先设置有字符串,用于表示包含有所述字符串的应用程序才具备调节内存调节值的权限,当接收到内存调节指令时,获取与所述内存调节指令相对应的应用程序,检测所述应用程序中是否包含有与所述预先设置的字符串相同的字符串内容,如果有,说明所述应用程序具备调节进程内存调节值的权限。
本实施的其他单元与实施例五中的501至504相同,相关说明请参阅实施例五,在此不作赘述。
本实施例在进行内存调节值设置之前,对接收到的内存调节指令相对应的应用程序进行权限判断,从而防止某些非法应用程序通过更改内存调节值来常驻内存,提供了***的安全性。
请参阅图8,其示出了本申请提供的一种内存处理装置实施例八的结构示意图,本实施例可以包括:指令接收单元801、判断单元802、内存调节值获取单元803、内存调节值保存单元804、第一设置单元805、时间记录单元806、第二设置单元807及内存调节值恢复单元808。其中:
所述指令接收单元801,用于接收应用程序发送的内存调节值设置指令,所述指令中包含有所述应用程序的进程标识。
所述判断单元802,用于依据所述进程标识,判断与所述进程标识相对应的进程是否具备预设调节权限;若是,触发内存调节值获取单元803。
所述内存调节值获取单元803,用于依据所述进程标识,获取与所述进程标识相对应的内存调节值。
所述内存调节值保存单元804,用于保存所述内存调节值的内容为其对应的初始内存调节值。
所述内存调节值保存单元804预先设置有初始内存调节值属性,用于保存调节前的相对应的内存调节值。例如,当前内存调节值的内容为1,所述内存调节值保存单元804将与该内存调节值对应的初始内存调节值的内容设置为1,用于保存所述设置前的内存调节值。
所述第一设置单元805,用于将所述内存调节值的内容设置为负数。
所述时间记录单元806,用于记录所述内存调节值为负数值的持续时间,当所述持续时间达到预设时间段时,触发所述内存调节值恢复单元808。
所述时间记录单元806分别与所述第一设置单元805、所述内存调节值恢复单元808相连,用于当所述第一设置单元805将所述内存调节值的内容设置为负数的同时记录所述内存调节值为负数值的持续时间,并当所述持续时间达到某一预设时间段时,触发所述内存恢复单元808将所述内存调节值的内容设置为其对应的初始内存调节值。例如,所述第一设置单元805将所述内存调节值设置为-1,所述时间记录单元806同时开始计时,当时间达到2分钟时,触发所述内存调节值恢复单元808。
所述第二设置单元807,用于将与所述进程标识相对应的目标节点设定为所述设置为负数的内存调节值。
所述内存调节值恢复单元808,用于将所述内存调节值的内容设置为其对应的初始内存调节值。
所述内存调节值恢复单元808与所述内存调节值保存单元804相连,获取所述内存调节值保存单元804中保存的与所述内存调节值相对应的初始内存调节值,将所述内存调节值设置为所述初始内存调节值。例如,将内存调节值从-1恢复为1。
需要说明的是,其他单元请参阅上述各个实施例的相关内容,在此不作赘述。
需要说明的是,所述内存调节值恢复单元808可以通过实施例六中的adjustProcessAdj函数实现,实现方式为,所述时间记录单元806当监测到记录的时间段达到某一预设时间段时,向所述内存调节值恢复单元808发送内容为true的reset参数,使用所述函数实现将内存调节值调节为设置为负数前的内存调节值(0或正整数值)。通过本申请提供的装置,可以实现在应用程序运行重要进程的时候,将所述应用程序进程的内存调节值设置为负数值,避免被强制释放内存,同时,可实现对所述应用程序占用内存的状态进行计时,使占用内存达到一个时间段的应用程序重新加入被***选择释放内存的程序集合中,避免过多应用程序长时间占用内存,导致内存无法释放的问题。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本发明所提供的一种内存处理的方法及装置进行了详细介绍,对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种内存处理的方法,其特征在于,包括:
接收应用程序发送的内存调节值设置指令;其中,所述内存调节值设置指令的生成方式为:所述应用程序实时获取所运行的进程的标识,若某进程的标识包含在预设进程标识集合内,则生成包含该进程的进程标识的内存调节值设置指令;
依据所述进程标识,获取与所述进程标识相对应的内存调节值;
将所述内存调节值的内容设置为负数;
将与所述进程标识相对应的目标节点设定为所述设置为负数的内存调节值。
2.根据权利要求1所述的方法,其特征在于,预先设置有应用程序对象,所述应用程序对象中包含有内存调节值;
其中,所述依据所述进程标识,获取与所述进程标识相对应的内存调节值,包括:
依据所述进程标识,获取与所述进程标识相对应的应用程序对象;
在所述应用程序对象中获取与所述进程标识相对应的内存调节值。
3.根据权利要求1所述的方法,其特征在于,在依据所述进程标识,获取与所述进程标识相对应的内存调节值之前,还包括:
依据所述进程标识,判断与所述进程标识相对应的进程是否具备预设调节权限;
若是,执行所述接收应用程序发送的内存调节值设置指令。
4.根据权利要求1至3任意一项所述的方法,其特征在于,在将所述内存调节值的内容设置为负数值之前,还包括:
保存所述内存调节值的内容为其对应的初始内存调节值。
5.根据权利要求4所述的方法,其特征在于,在将所述内存调节值的内容设置为负数值之后,还包括:
记录所述内存调节值为负数值的持续时间;
当所述持续时间达到预设时间段时,将所述内存调节值的内容设置为其对应的初始内存调节值。
6.一种内存处理的装置,其特征在于,包括:
指令接收单元,用于接收应用程序发送的内存调节值设置指令;
其中,所述内存调节值设置指令的生成方式为:所述应用程序实时获取所运行的进程的标识,若某进程的标识包含在预设进程标识集合内,则生成包含该进程的进程标识的内存调节值设置指令;
内存调节值获取单元,用于依据所述进程标识,获取与所述进程标识相对应的内存调节值;
第一设置单元,用于将所述内存调节值的内容设置为负数;
第二设置单元,用于将与所述进程标识相对应的目标节点设定为所述设置为负数的内存调节值。
7.根据权利要求6所述的装置,其特征在于,还包括:
第一保存单元,用于预先设置有应用程序对象,所述应用程序对象中包含有内存调节值;
其中:所述获取单元包括:
第一获取子单元,用于依据所述进程标识,获取与所述进程标识相对应的应用程序对象;
第二获取子单元,用于在所述应用程序对象中获取与所述进程标识相对应的内存调节值。
8.根据权利要求6所述的装置,其特征在于,还包括:
判断单元,用于依据所述进程标识,判断与所述进程标识相对应的进程是否具备预设调节权限;若是,触发所述内存调节值获取单元。
9.根据权利要求6至8任意一项所述的装置,其特征在于,还包括:
内存调节值保存单元,用于保存所述内存调节值的内容为其对应的初始内存调节值。
10.根据权利要求9所述的装置,其特征在于,还包括:
时间记录单元,用于记录所述内存调节值为负数值的持续时间;当所述持续时间达到预设时间段时,触发内存调节值恢复单元;
内存调节值恢复单元,用于将所述内存调节值的内容设置为其对应的初始内存调节值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310684548.8A CN103617129B (zh) | 2013-12-10 | 2013-12-10 | 一种内存处理的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310684548.8A CN103617129B (zh) | 2013-12-10 | 2013-12-10 | 一种内存处理的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103617129A CN103617129A (zh) | 2014-03-05 |
CN103617129B true CN103617129B (zh) | 2017-10-24 |
Family
ID=50167832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310684548.8A Active CN103617129B (zh) | 2013-12-10 | 2013-12-10 | 一种内存处理的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103617129B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902359B (zh) * | 2014-03-31 | 2018-02-23 | 深圳创维-Rgb电子有限公司 | 基于Android***内存优化与应用调度方法及*** |
CN105302579B (zh) * | 2015-11-27 | 2019-05-21 | 北京奇虎科技有限公司 | 一种***内存的占用方法和装置 |
CN105912398A (zh) * | 2016-04-06 | 2016-08-31 | 北京小米移动软件有限公司 | 内存检测方法及装置 |
CN110134454B (zh) * | 2018-02-09 | 2022-06-14 | 聚好看科技股份有限公司 | 一种启动应用程序的方法及其装置 |
CN109597323A (zh) * | 2018-11-09 | 2019-04-09 | 泰州市柯普尼通讯设备有限公司 | 船舶航海卫星通讯天线分级式缓存***及其使用方法 |
CN111290843A (zh) * | 2019-05-10 | 2020-06-16 | 展讯半导体(南京)有限公司 | 进程管理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193825A (zh) * | 2011-04-26 | 2011-09-21 | 北京思创银联科技股份有限公司 | 进程保护方法 |
CN103164229A (zh) * | 2013-04-08 | 2013-06-19 | 北京奇虎科技有限公司 | 一种清理移动终端进程的方法及装置 |
CN103294542A (zh) * | 2013-06-07 | 2013-09-11 | 深圳Tcl新技术有限公司 | 进程保护的方法及其装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101013509B1 (ko) * | 2008-01-04 | 2011-02-11 | 주식회사 마크애니 | 가상 응용 프로그램 시스템, 저장장치, 가상 응용 프로그램수행 방법 및 가상 환경 보호 방법 |
CN101582051B (zh) * | 2009-06-10 | 2011-01-19 | 腾讯科技(深圳)有限公司 | 一种调整内存的方法和装置 |
CN101859261B (zh) * | 2010-06-09 | 2015-05-13 | 中兴通讯股份有限公司 | 一种释放内存的控制方法及控制设备 |
CN102253900B (zh) * | 2011-06-13 | 2013-06-12 | 华中师范大学 | 一种Windows CE操作***下的内存优化方法 |
CN103092689A (zh) * | 2013-01-10 | 2013-05-08 | 深圳市金立通信设备有限公司 | 一种进程管理的方法及终端 |
CN103092700B (zh) * | 2013-02-01 | 2016-09-28 | 华为终端有限公司 | 内存清理方法、装置和终端设备 |
-
2013
- 2013-12-10 CN CN201310684548.8A patent/CN103617129B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193825A (zh) * | 2011-04-26 | 2011-09-21 | 北京思创银联科技股份有限公司 | 进程保护方法 |
CN103164229A (zh) * | 2013-04-08 | 2013-06-19 | 北京奇虎科技有限公司 | 一种清理移动终端进程的方法及装置 |
CN103294542A (zh) * | 2013-06-07 | 2013-09-11 | 深圳Tcl新技术有限公司 | 进程保护的方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103617129A (zh) | 2014-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103617129B (zh) | 一种内存处理的方法及装置 | |
CN102023795B (zh) | 电子装置及其功能快捷操作方法 | |
CN102135992A (zh) | 终端应用程序的归类方法和终端 | |
CN104079724B (zh) | 一种手机卡掉卡恢复方法及应用手机卡的移动终端 | |
CN104765466B (zh) | 移动终端的按键控制方法及装置 | |
CN105334939B (zh) | 终端功耗控制方法及装置 | |
CN105704785A (zh) | 一种网络搜索方法、装置及移动终端 | |
CN104038632A (zh) | 一种智能终端管理方法及装置 | |
CN104750589B (zh) | 一种存储器参数调节方法及移动终端 | |
CN103870319B (zh) | 信息处理方法、装置及电子设备 | |
CN105159721A (zh) | 一种多模式启动智能设备的方法及其*** | |
CN104063316B (zh) | 一种应用的测试方法及装置 | |
CN106502840A (zh) | 一种数据备份方法、装置及*** | |
CN106708616A (zh) | 进程控制方法和进程控制装置 | |
CN108460040A (zh) | 界面内容的显示方法、显示装置以及智能显示设备 | |
CN104023147A (zh) | 一种可使移动终端稳定休眠的方法及*** | |
CN104796967B (zh) | 无线网络数据还原方法及装置 | |
CN105138447A (zh) | 一种Reboot测试过程中监测硬盘和内存的实现方法 | |
CN102984330B (zh) | 一种通讯装置的联系人数据管理方法 | |
CN101320389B (zh) | 文件管理方法和装置 | |
CN104102498A (zh) | 一种移动终端及其开机方法 | |
EP3468261B1 (en) | Control method and apparatus for smart card, terminal device, and smart card | |
CN106020426B (zh) | 一种唤醒锁的释放方法和装置 | |
CN103327178B (zh) | 自动拨打页面中分机电话的方法及装置 | |
CN106445516B (zh) | 外置无线网卡驱动加载方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: Room 101-105, floor 1, Chuangda building, No. 9, Qinghua East Road, Haidian District, Beijing 100083 (Dongsheng District) Patentee after: Thunder Software Technology Co., Ltd. Address before: 100191 Beijing Haidian District Lung Cheung Road No. 1 Tai Xiang business building 4 layer 401-409 Patentee before: Thunder Software Technology Co., Ltd. |
|
CP02 | Change in the address of a patent holder |