一种终端、一种释放内存的方法及装置制造方法

文档序号:6550221阅读:200来源:国知局
一种终端、一种释放内存的方法及装置制造方法
【专利摘要】本发明涉及通信【技术领域】,特别涉及一种终端、一种释放内存的方法及装置。所述方法包括:检测常驻进程的内存泄漏情况,检测终端当前状态,在所述终端为空闲状态,且所述常驻进程存在内存泄漏时,结束内存泄漏的常驻进程。检测常驻进程的内存泄漏情况,若常驻进程的存在泄漏,并且终端当前状态处于空闲状态,则结束内存泄漏的常驻进程,释放因内存泄漏占用的内存,从而可避免重启或结束应用来释放内存。
【专利说明】一种终端、一种释放内存的方法及装置

【技术领域】
[0001]本发明涉及通信【技术领域】,特别涉及一种终端、一种释放内存的方法及装置。

【背景技术】
[0002]内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元,直到程序结束。内存泄漏也就是说该内存空间使用完毕之后未回收。
[0003]现有的释放内存的方法是针对整体的内存,通常采用在不让用户发现的情况下重启释放内存的方式,而重启的时间至少要几十秒,再加上重启后背光被限制的最短时间,总时间长达一至两分钟,造成终端在这段时间内处于不可使用的状态。
[0004]现有的释放内存无论是重启还是结束应用释放内存的方式都会造成在线应用被关闭,如QQ、微信,由于没有记住登陆密码而无法恢复到用户使用的场景,导致用户体验差。


【发明内容】

[0005]针对现有技术不足,本发明的目的在于提供一种终端、一种释放内存的方法及装置,结束存在内存泄漏的常驻进程来释放内存,旨在解决现有的释放内存的方式需要重启或结束应用,重启所需的时间较长、结束应用导致用户体验差的问题。
[0006]本发明提出的技术方案是:
[0007]一种释放内存的方法,包括:
[0008]检测常驻进程的内存泄漏情况;
[0009]检测终端当前状态;
[0010]在所述终端为空闲状态,且所述常驻进程存在内存泄漏时,结束内存泄漏的常驻进程。
[0011]进一步地,所述检测常驻进程的内存泄漏情况具体为对所述终端的所有常驻进程的内存泄漏情况进行逐个检测,在所述终端为空闲状态,且所述终端的所有常驻进程中存在内存泄漏的常驻进程时,结束所述内存泄漏的常驻进程。
[0012]进一步地,所述检测常驻进程的内存泄漏情况具体为对所述终端的所有常驻进程的整体内存泄漏情况进行检测,在所述终端为空闲状态,且所述终端的所有常驻进程的整体内存存在泄漏情况时,结束所述终端的所有常驻进程。
[0013]进一步地,在所述终端的所有常驻进程的整体内存存在泄漏情况时,进一步对所述终端的所有常驻进程的内存泄漏情况进行逐个检测,若单个常驻进程存在内存泄漏,在所述终端为空闲状态,则结束该单个常驻进程,若单个常驻进程不存在内存泄漏,在所述终端为空闲状态,则结束所述整体常驻进程。
[0014]进一步地,所述检测常驻进程的内存泄漏情况的步骤,包括:
[0015]识别所述常驻进程的内存使用值;
[0016]若所述内存使用值大于预设阈值,则判断所述常驻进程存在内存泄漏。
[0017]本发明还提供一种释放内存的装置,包括:
[0018]常驻进程检测模块,用于检测常驻进程的内存泄漏情况;
[0019]状态检测模块,用于检测终端当前状态;
[0020]结束进程模块,在所述终端为空闲状态,且所述常驻进程存在内存泄漏时,用于结束内存泄漏的常驻进程。
[0021]进一步地,所述常驻进程检测模块包括第一检测模块,用于对所述终端的所有常驻进程的内存泄漏情况进行逐个检测;
[0022]所述结束进程模块包括第一结束进程模块,在所述终端为空闲状态,且所述终端的所有常驻进程中存在内存泄漏的常驻进程时,用于结束所述内存泄漏的常驻进程。
[0023]进一步地,所述常驻进程检测模块包括第二检测模块,用于对所述终端的所有常驻进程的整体内存泄漏情况进行检测;
[0024]所述结束进程模块包括第二结束进程模块,在所述终端为空闲状态,且所述终端的所有常驻进程的整体内存存在泄漏情况时,用于结束所述终端的所有常驻进程。
[0025]进一步地,所述常驻进程检测模块包括:
[0026]第一检测模块,用于对所述终端的所有常驻进程的内存泄漏情况进行逐个检测;
[0027]第二检测模块,用于对所述终端的所有常驻进程的整体内存泄漏情况进行检测;
[0028]所述结束进程模块包括:
[0029]第一结束进程模块,在所述终端为空闲状态,且所述终端的所有常驻进程中存在内存泄漏的常驻进程时,用于结束所述内存泄漏的常驻进程。
[0030]第二结束进程模块,在所述终端为空闲状态,且所述终端的所有常驻进程的整体内存存在泄漏情况时,用于结束所述终端的所有常驻进程;
[0031]在所述第二检测模块检测所述终端的所有常驻进程的整体内存存在泄漏情况时,所述第一检测模块进一步对所述终端的所有常驻进程的内存泄漏情况进行逐个检测,若单个常驻进程存在内存泄漏,在所述终端为空闲状态,则所述第一结束进程模块结束该单个常驻进程,若单个常驻进程不存在内存泄漏,在所述终端为空闲状态,则所述第二结束进程模块结束所述整体常驻进程。
[0032]本发明还提供一种终端,包括上述的一种释放内存的装置。
[0033]根据上述的技术方案,本发明一种终端、一种释放内存的方法及装置的有益效果:检测常驻进程的内存泄漏情况,若常驻进程的存在泄漏,并且终端当前状态处于空闲状态,则结束内存泄漏的常驻进程,释放因内存泄漏占用的内存,从而可避免重启或结束应用来释放内存。

【专利附图】

【附图说明】
[0034]图1是本发明实施例提供的一种释放内存的方法的流程图;
[0035]图2是本发明实施例提供的一种释放内存的装置的功能模块框图。

【具体实施方式】
[0036]为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0037]如图1所示,本发明实施例所提供的一种释放内存的方法,包括以下步骤:
[0038]步骤S1、检测常驻进程的内存泄漏情况。
[0039]在检测常驻进程的内存泄漏情况时,需要一个判断基准来判断常驻进程是否为内存泄漏,为此,在步骤SI中,包括:
[0040]识别常驻进程的内存使用值;
[0041]若内存使用值大于预设阈值,则判断常驻进程存在内存泄漏。
[0042]在终端系统内,常驻进程会占用内存一定的资源,识别常驻进程所占用的资源数值也就是内存使用值,得到内存使用值后,将其与预设阈值进行比较,当内存使用值大于预设阈值时,常驻进程存在内存泄漏。当内存使用值小于或等于预设阈值时,常驻进程不存在内存泄漏。
[0043]预设阈值是根据产品定义情况和终端设备信息设定。
[0044]由于常驻进程在产品出厂时厂商已定义那些进程为常驻进程,并且第三方软件并不能检测到具体的常驻进程,只能检测到整体常驻进程的占用内存的数值,是难于判断常驻进程是否会存在内存泄漏的情况。
[0045]本实施例中,在厂商定义常驻进程时,每一常驻进程都提供相应的接口以供识别和检测,当然也可以限制第三方软件对具体每一常驻进程的识别和检测。
[0046]步骤S2、检测终端当前状态。
[0047]本发明中并不限定步骤SI和步骤S2的先后顺序,可以是先检测常驻进程的内存泄漏情况后检测终端当前状态,也可以是先检测终端当前状态后检测常驻进程的内存泄漏情况,当然,还可以是同时检测常驻进程的内存泄漏情况、终端当前状态。
[0048]本实施例中,当检测到常驻进程存在内存泄漏时,并不马上结束内存泄漏的常驻进程,而是检测终端当前状态,若终端当前为空闲状态,则结束内存泄漏的常驻进程。
[0049]若终端当前不为空闲状态,则不结束内存泄漏的常驻进程,待检测到终端当前状态为空闲状态时,再次检测常驻进程是否仍处于内存泄漏状态,若常驻进程仍处于内存泄漏状态,则结束内存泄漏的常驻进程,若在再次检测时,常驻进程不再处于内存泄漏状态时,则不结束常驻进程。
[0050]本实施例中,所述空闲状态包括但不限于锁屏状态、灭屏状态及无通话状态。
[0051]步骤S3、在终端为空闲状态,且常驻进程存在内存泄漏时,结束内存泄漏的常驻进程。
[0052]当检测到常驻进程存在内存泄漏,并且终端处于空闲状态时,则结束内存泄漏的常驻进程。
[0053]当检测到常驻进程不存在内存泄漏,或者终端不处于空闲状态,则不对常驻进程进行处理。
[0054]在终端内通常都有多个常驻进程,为此,在检测常驻进程的内存泄漏情况时,可以对多个常驻进程一个一个地进行检测,还可以对多个常驻进程的总体进行检测。
[0055]检测常驻进程的内存泄漏情况包括以下三种情况。
[0056]第一种,检测常驻进程的内存泄漏情况具体为对终端的所有常驻进程的内存泄漏情况进行逐个检测,在终端为空闲状态,且终端的所有常驻进程中存在内存泄漏的常驻进程时,结束内存泄漏的常驻进程。
[0057]本实施例中,对终端内的所有常驻进程中每一个常驻进程都进行检测其内存泄漏情况,若其中一个常驻进程存在内存泄漏,并且终端处于空闲状态,则对应结束该常驻进程。
[0058]每一个常驻进程都有一个预设阈值,每一个常驻进程与其对应的预设阈值进行比较,若其内存使用值大于其对应的预设阈值,则说明该常驻进程存在内存泄漏的情况。
[0059]第二种,检测常驻进程的内存泄漏情况具体为对终端的所有常驻进程的整体内存泄漏情况进行检测,在终端为空闲状态,且终端的所有常驻进程的整体内存存在泄漏情况时,结束终端的所有常驻进程。
[0060]本实施例中,对终端内的所有常驻进程整体进行检测其内存泄漏情况,若整体常驻进程存在内存泄漏,并且终端处于空闲状态,则结束所有常驻进程。
[0061]整体常驻进程有一个总内存使用值,其对应有总预设阈值,若总内存使用值大于总预设阈值,则说明该整体常驻进程存在内存泄漏的情况。
[0062]第三种,在终端的所有常驻进程的整体内存存在泄漏情况时,进一步对终端的所有常驻进程的内存泄漏情况进行逐个检测,若单个常驻进程存在内存泄漏,在终端为空闲状态,则结束该单个常驻进程,若单个常驻进程不存在内存泄漏,在终端为空闲状态,则结束整体常驻进程。
[0063]本实施例中,对终端内的所有常驻进程整体进行检测其内存泄漏情况,若整体常驻进程存在内存泄漏,则对终端内的所有常驻进程中每一个常驻进程都进行检测其内存泄漏情况,若每一个常驻进程都不存在内存泄漏,并且在终端为空闲状态,则结束所有的常驻进程;若单个常驻进程存在内存泄漏,在终端为空闲状态,则结束该单个常驻进程。
[0064]整体常驻进程有一个总内存使用值,其对应有总预设阈值,总预设阈值并不是等于每一个预设阈值相加之和,为此,存在单个常驻进程不存在内存泄漏但整体常驻进程存在内存泄漏的情况。
[0065]检测所有常驻进程的总内存使用值,将总内存使用值与总预设阈值进行对比,若总内存使用值大于总预设阈值,以及单个常驻进程不存在内存泄漏,终端处于空闲状态,则结束整体常驻进程。
[0066]为了实现上述的一种释放内存的方法,如图2所示,本发明实施例还提供的一种释放内存的装置,包括常驻进程检测模块11、状态检测模块12、结束进程模块13。
[0067]常驻进程检测模块11,用于检测常驻进程的内存泄漏情况。
[0068]在检测常驻进程的内存泄漏情况时,需要一个判断基准来判断常驻进程是否为内存泄漏,为此,常驻进程检测模块11包括:
[0069]识别模块,用于识别常驻进程的内存使用值;
[0070]判断模块,若内存使用值大于预设阈值,用于则判断常驻进程存在内存泄漏。
[0071]在终端系统内,常驻进程会占用内存一定的资源,识别常驻进程所占用的资源数值也就是内存使用值,得到内存使用值后,将其与预设阈值进行比较,当内存使用值大于预设阈值时,常驻进程存在内存泄漏。当内存使用值小于或等于预设阈值时,常驻进程不存在内存泄漏。
[0072]预设阈值是根据产品定义情况和终端设备信息设定。
[0073]由于常驻进程在产品出厂时厂商已定义那些进程为常驻进程,并且第三方软件并不能检测到具体的常驻进程,只能检测到整体常驻进程的占用内存的数值,是难于判断常驻进程是否会存在内存泄漏的情况。
[0074]本实施例中,在厂商定义常驻进程时,每一常驻进程都提供相应的接口以供识别和检测,当然也可以限制第三方软件对具体每一常驻进程的识别和检测。
[0075]状态检测模块12,用于检测终端当前状态。
[0076]本发明中并不限定常驻进程检测模块和状态检测模块12的检测先后顺序,可以是先检测常驻进程的内存泄漏情况后检测终端当前状态,也可以是先检测终端当前状态后检测常驻进程的内存泄漏情况,当然,还可以是同时检测常驻进程的内存泄漏情况、终端当前状态。
[0077]本实施例中,当常驻进程检测模块11检测到常驻进程存在内存泄漏时,并不马上结束内存泄漏的常驻进程,而是状态检测模块12检测终端当前状态,若终端当前为空闲状态,则结束内存泄漏的常驻进程。
[0078]若终端当前不为空闲状态,则不结束内存泄漏的常驻进程,待检测到终端当前状态为空闲状态时,再次检测常驻进程是否仍处于内存泄漏状态,若常驻进程仍处于内存泄漏状态,则结束内存泄漏的常驻进程,若在再次检测时,常驻进程不再处于内存泄漏状态时,则不结束常驻进程。
[0079]本实施例中,所述空闲状态包括但不限于锁屏状态、灭屏状态及无通话状态。
[0080]结束进程模块13,在终端为空闲状态,且常驻进程存在内存泄漏时,用于结束内存泄漏的常驻进程。
[0081]当检测到常驻进程存在内存泄漏,并且终端处于空闲状态时,则结束内存泄漏的常驻进程。
[0082]当检测到常驻进程不存在内存泄漏,或者终端不处于空闲状态,则不对常驻进程进行处理。
[0083]在终端内通常都有多个常驻进程,为此,在检测常驻进程的内存泄漏情况时,可以对多个常驻进程一个一个地进行检测,还可以对多个常驻进程的总体进行检测。
[0084]检测常驻进程的内存泄漏情况包括以下三种情况。
[0085]第一种,常驻进程检测模块11包括第一检测模块,用于对终端的所有常驻进程的内存泄漏情况进行逐个检测;
[0086]结束进程模块13包括第一结束进程模块,在终端为空闲状态,且终端的所有常驻进程中存在内存泄漏的常驻进程时,用于结束内存泄漏的常驻进程。
[0087]本实施例中,第一检测模块对终端内的所有常驻进程中每一个常驻进程都进行检测其内存泄漏情况,若其中一个常驻进程存在内存泄漏,并且终端处于空闲状态,则第一结束进程模块对应结束该常驻进程。
[0088]每一个常驻进程都有一个预设阈值,每一个常驻进程与其对应的预设阈值进行比较,若其内存使用值大于其对应的预设阈值,则说明该常驻进程存在内存泄漏的情况。
[0089]第二种,常驻进程检测模块11包括第二检测模块,用于对终端的所有常驻进程的整体内存泄漏情况进行检测;
[0090]结束进程模块13包括第二结束进程模块,在终端为空闲状态,且终端的所有常驻进程的整体内存存在泄漏情况时,用于结束终端的所有常驻进程。
[0091]本实施例中,第二检测模块对终端内的所有常驻进程整体进行检测其内存泄漏情况,若整体常驻进程存在内存泄漏,并且终端处于空闲状态,则第二结束进程模块结束所有常驻进程。
[0092]整体常驻进程有一个总内存使用值,其对应有总预设阈值,若总内存使用值大于总预设阈值,则说明该整体常驻进程存在内存泄漏的情况。
[0093]第三种,常驻进程检测模块11包括:
[0094]第一检测模块,用于对终端的所有常驻进程的内存泄漏情况进行逐个检测;
[0095]第二检测模块,用于对终端的所有常驻进程的整体内存泄漏情况进行检测;
[0096]结束进程模块13包括:
[0097]第一结束进程模块,在终端为空闲状态,且终端的所有常驻进程中存在内存泄漏的常驻进程时,用于结束内存泄漏的常驻进程。
[0098]第二结束进程模块,在终端为空闲状态,且终端的所有常驻进程的整体内存存在泄漏情况时,用于结束终端的所有常驻进程;
[0099]在第二检测模块检测终端的所有常驻进程的整体内存存在泄漏情况时,第一检测模块进一步对终端的所有常驻进程的内存泄漏情况进行逐个检测,若单个常驻进程存在内存泄漏,在终端为空闲状态,则第一结束进程模块结束该单个常驻进程,若单个常驻进程不存在内存泄漏,在终端为空闲状态,则第二结束进程模块结束整体常驻进程。
[0100]本实施例中,第二检测模块对终端内的所有常驻进程整体进行检测其内存泄漏情况,若整体常驻进程存在内存泄漏,则第一检测模块对终端内的所有常驻进程中每一个常驻进程都进行检测其内存泄漏情况,若每一个常驻进程都不存在内存泄漏,并且在终端为空闲状态,则第二结束进程模块结束所有的常驻进程;若单个常驻进程存在内存泄漏,在终端为空闲状态,则第一结束进程模块结束该单个常驻进程。
[0101]整体常驻进程有一个总内存使用值,其对应有总预设阈值,总预设阈值并不是等于每一个预设阈值相加之和,为此,存在单个常驻进程不存在内存泄漏但整体常驻进程存在内存泄漏的情况。
[0102]检测所有常驻进程的总内存使用值,将总内存使用值与总预设阈值进行对比,若总内存使用值大于总预设阈值,以及单个常驻进程不存在内存泄漏,终端处于空闲状态,则结束整体常驻进程。
[0103]本发明实施例还提供一种终端,包括上述的一种释放内存的装置。
[0104]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种释放内存的方法,其特征在于,包括: 检测常驻进程的内存泄漏情况; 检测终端当前状态; 在所述终端为空闲状态,且所述常驻进程存在内存泄漏时,结束内存泄漏的常驻进程。
2.如权利要求1所述的一种释放内存的方法,其特征在于,所述检测常驻进程的内存泄漏情况具体为对所述终端的所有常驻进程的内存泄漏情况进行逐个检测,在所述终端为空闲状态,且所述终端的所有常驻进程中存在内存泄漏的常驻进程时,结束所述内存泄漏的常驻进程。
3.如权利要求1所述的一种释放内存的方法,其特征在于,所述检测常驻进程的内存泄漏情况具体为对所述终端的所有常驻进程的整体内存泄漏情况进行检测,在所述终端为空闲状态,且所述终端的所有常驻进程的整体内存存在泄漏情况时,结束所述终端的所有常驻进程。
4.如权利要求3所述的一种释放内存的方法,其特征在于,在所述终端的所有常驻进程的整体内存存在泄漏情况时,进一步对所述终端的所有常驻进程的内存泄漏情况进行逐个检测,若单个常驻进程存在内存泄漏,在所述终端为空闲状态,则结束该单个常驻进程,若单个常驻进程不存在内存泄漏,在所述终端为空闲状态,则结束所述整体常驻进程。
5.如权利要求1-4任一项所述的一种释放内存的方法,其特征在于,所述检测常驻进程的内存泄漏情况的 步骤,包括: 识别所述常驻进程的内存使用值; 若所述内存使用值大于预设阈值,则判断所述常驻进程存在内存泄漏。
6.一种释放内存的装置,其特征在于,包括: 常驻进程检测模块,用于检测常驻进程的内存泄漏情况; 状态检测模块,用于检测终端当前状态; 结束进程模块,在所述终端为空闲状态,且所述常驻进程存在内存泄漏时,用于结束内存泄漏的常驻进程。
7.如权利要求6所述的一种释放内存的装置,其特征在于,所述常驻进程检测模块包括第一检测模块,用于对所述终端的所有常驻进程的内存泄漏情况进行逐个检测; 所述结束进程模块包括第一结束进程模块,在所述终端为空闲状态,且所述终端的所有常驻进程中存在内存泄漏的常驻进程时,用于结束所述内存泄漏的常驻进程。
8.如权利要求6所述的一种释放内存的装置,其特征在于,所述常驻进程检测模块包括第二检测模块,用于对所述终端的所有常驻进程的整体内存泄漏情况进行检测; 所述结束进程模块包括第二结束进程模块,在所述终端为空闲状态,且所述终端的所有常驻进程的整体内存存在泄漏情况时,用于结束所述终端的所有常驻进程。
9.如权利要求6所述的一种释放内存的装置,其特征在于,所述常驻进程检测模块包括: 第一检测模块,用于对所述终端的所有常驻进程的内存泄漏情况进行逐个检测; 第二检测模块,用于对所述终端的所有常驻进程的整体内存泄漏情况进行检测; 所述结束进程模块包括: 第一结束进程模块,在所述终端为空闲状态,且所述终端的所有常驻进程中存在内存泄漏的常驻进程时,用于结束所述内存泄漏的常驻进程。 第二结束进程模块,在所述终端为空闲状态,且所述终端的所有常驻进程的整体内存存在泄漏情况时,用于结束所述终端的所有常驻进程; 在所述第二检测模块检测所述终端的所有常驻进程的整体内存存在泄漏情况时,所述第一检测模块进一步对所述终端的所有常驻进程的内存泄漏情况进行逐个检测,若单个常驻进程存在内存泄漏,在所述终端为空闲状态,则所述第一结束进程模块结束该单个常驻进程,若单个常驻进程不存在内存泄漏,在所述终端为空闲状态,则所述第二结束进程模块结束所述整体常驻进程。
10.一种终端,其 特征在于,包括如权利要求6-9任一项所述的一种释放内存的装置。
【文档编号】G06F9/50GK104050044SQ201410277263
【公开日】2014年9月17日 申请日期:2014年6月19日 优先权日:2014年6月19日
【发明者】帅朝春, 龚源 申请人:宇龙计算机通信科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1