一种管理程序内存占用量的方法和终端的制作方法
【专利摘要】本发明公开了一种管理程序内存占用量的方法和终端,包括:前台程序的任务获取和输出数据的过程中,检测程序任务的运行状态;根据检测的运行状态,为每个任务分配内存占用阈值;检测每个任务的内存占用情况,若检测到任一所述任务所占用的内存值达到其内存占用阈值,暂停该任务获取数据的过程;若检测到该任务所占用的内存值未达到其内存占用阈值,继续该任务获取数据的过程;若检测到系统内存的占用量达到预设的清理阈值,对系统的后台程序执行清理。从上面所述可以看出,本发明提供的一种管理程序内存占用量的方法和终端既保证了前台程序的正常运行,又能够避免触发系统自动清理导致后台程序被意外终止,提高了移动终端上程序的可靠性。
【专利说明】
一种管理程序内存占用量的方法和终端
技术领域
[0001]本发明涉及移动设备管理技术领域,特别是指一种管理程序内存占用量的方法和终端。
【背景技术】
[0002]随着智能终端技术和软件技术的日益发展,如手机、平板电脑等便携式终端所能实现的功能越来越丰富,在一定程度上替代了传统的台式个人电脑和笔记本电脑。但是,受设计空间和容量限制,智能终端的硬件规格通常低于传统电脑,特别是其RAM(Random-Access Memory,随机存取存储器),即常说的内存,容量通常较低;在前台程序执行多线程任务,导致内存占用量过大时,会触发系统的自动清理功能,将后台程序终止,影响用户的正常使用;当前台任务内存占用进一步增加时,最终也会被系统终止,甚至导致整个系统故障。由于硬件条件存在客观约束,无法随意增加系统内存,因此希望能使用软件实现对前台程序内存占用量的限制,以保证前台、后台程序的正常运行。
【发明内容】
[0003]有鉴于此,本发明的目的在于提出一种管理程序内存占用量的方法和终端,用以实现通过动态调整前台程序每个任务的可用内存量限制前台程序的内存占用量。
[0004]基于上述目的本发明提供的一种管理程序内存占用量的方法,包括:
[0005]前台程序的任务获取数据的过程中,检测程序任务的运行状态;
[0006]根据检测的每个程序的任务的运行状态,为每个任务分配内存占用阈值;
[0007]检测每个任务的内存占用情况,若检测到任一所述任务所占用的内存值达到其内存占用阈值,暂停该任务获取数据的过程;若检测到该任务所占用的内存值未达到其内存占用阈值,继续该任务获取数据的过程;
[0008]若检测到系统内存的占用量达到预设的清理阈值,对系统的后台程序执行清理。
[0009]可选的,所述运行状态包括:完成任务当前任务预期占用的最大内存值;所述根据运行状态,为每个任务分配内存占用阈值,包括:
[0010]将系统的可用内存值按照每个任务预期占用的最大内存值的比例分配给每个任务。
[0011 ]可选的,获取所述可用内存值的方法包括:
[0012]获取系统当前全部后台程序的内存占用量;
[0013]用所述清理阈值减去所述内存占用量得到所述可用内存值;或,用所述清理阈值减去所述内存占用量,再减去一缓冲值,得到所述可用内存值。
[0014]可选的,所述缓冲值为:
[0015]所述清理阈值减去所述内存占用量的差乘以预设的缓冲值系数,其中所述缓冲系数为预设的O?0.5之间的实数。
[0016]可选的,每个所述任务包括数据获取队列和数据输出队列;所述数据获取队列和数据输出队列均包括有多个容量相同的数据块,其中第一个数据块作为头数据块;
[0017]所述前台程序的任务获取数据的过程包括:
[0018]所述数据获取队列的头数据块存储所述任务获取的数据,若所述数据获取队列的头数据块存储的数据量达到预设的数据块容量,将其移动至所述数据输出队列尾部,将所述数据获取队列的下一数据块作为新的头数据块;
[0019]所述数据输出队列的头数据块输出数据,若所述数据输出队列的头数据块完成数据输出过程,删除头数据块保存的数据,将其移动至所述数据获取队列尾部,将所述数据输出队列的下一数据块作为新的头数据块;
[0020]所述根据检测的每个程序任务的运行状态,为每个任务分配内存占用阈值包括:
[0021]用所述内存占用阈值除以所述数据块容量得到数量阈值;
[0022]所述若检测到任一所述任务所占用的内存值达到其内存占用阈值,暂停该任务获取数据的过程,包括:
[0023]若检测所述数据输出队列上的数据块数量达到所述数量阈值,则判定该任务所占用的内存值达到其内存占用阈值;将所述数据获取队列的下一数据块作为头数据块后,暂停向新的头数据块存储数据;
[0024]所述若检测到该任务所占用的内存值未达到其内存占用阈值,继续该任务获取数据的过程,包括:
[0025]若检测到所述数据输出队列上的数据块数量未达到所述数量阈值,则判定该任务所占用的内存值未达到其内存占用阈值;继续所述数据获取队列的头数据块的数据存储过程。
[0026]可选的,该方法还包括:
[0027]在前台程序运行的过程中,查找与所述前台程序关联后台程序,为所述后台程序添加保护标签;
[0028]所述若检测到系统内存的占用量大于预设的清理阈值,对系统的后台程序执行清理,包括:
[0029]将内存中未设置保护标签的后台程序按照优先级由高到低的顺序进行排序,按照顺序依次终止所述后台程序,直至被终止的后台程序的总内存占用量大于所述清理阈值。
[0030]可选的,所述后台程序优先级的判定依据为后台程序转入后台的时间,按照转入时间由早到晚的顺序对后台程序设置由高到低的优先级;
[0031]或者所述后台程序优先级的判定依据为后台程序占用内存的大小,按照占用内存由大到小的顺序对后台程序设置由高到低的优先级。
[0032]可选的,所述后台程序优先级的判定依据为后台程序占用内存的大小时,所述按照顺序依次终止所述后台程序,包括:
[0033]在对后台程序执行终止操作前,检测该后台程序转入后台的时间,判断所述时间是否早于预设的时间阈值;若是,则终止该后台程序,否则继续检测下一临时文件;其中所述时间阈值是距所述终止操作发生的时刻第一时间间隔前的系统时间。
[0034]本发明还提供一种管理程序内存占用量的终端,包括:
[0035]状态检测单元,用于在前台程序的任务获取和输出数据的过程中,检测程序任务的运行状态;
[0036]占用阈值分配单元,用于根据检测的每个程序任务的运行状态,为每个任务分配内存占用阈值;
[0037]前台程序控制单元,用于检测每个任务的内存占用情况,若检测到任一所述任务所占用的内存值达到其内存占用阈值,暂停该任务获取数据的过程;若检测到该任务所占用的内存值未达到其内存占用阈值,继续该任务获取数据的过程;
[0038]后台程序清理单元,若检测到系统内存的占用量达到预设的清理阈值,对系统的后台程序执行清理。
[0039]可选的,所述运行状态包括:完成任务当前任务预期占用的最大内存值;所述占用阈值分配单元用于将系统的可用内存值按照每个任务预期占用的最大内存值的比例分配给每个任务。
[0040]可选的,所述占用阈值分配单元用于获取系统当前全部后台程序的内存占用量;用所述清理阈值减去所述内存占用量得到所述可用内存值;或,用所述清理阈值减去所述内存占用量,再减去一缓冲值,得到所述可用内存值。
[0041]可选的,所述缓冲值为:
[0042]所述清理阈值减去所述内存占用量的差乘以预设的缓冲值系数,其中所述缓冲系数为预设的O?0.5之间的实数。
[0043]可选的,每个所述任务包括数据获取队列和数据输出队列;所述数据获取队列和数据输出队列均包括多个数据块,其中第一个数据块作为头数据块;
[0044]所述前台程序控制单元用于控制所述数据获取队列的头数据块存储所述任务获取的数据,若所述数据获取队列的头数据块存储的数据量达到预设的数据块容量,将其移动至所述数据输出队列尾部,将所述数据获取队列的下一数据块作为新的头数据块;
[0045]所述前台程序控制单元还用于控制所述数据输出队列的头数据块输出数据,若所述数据输出队列的头数据块完成数据输出过程,删除头数据块保存的数据,将其移动至所述数据获取队列尾部,将所述数据输出队列的下一数据块作为新的头数据块;
[0046]所述占用阈值分配单元用于把所述内存占用阈值除以所述数据块容量得到数量阈值;
[0047]所述前台程序控制单元用于检测所述数据输出队列上的数据块数量是否达到所述数量阈值,若达到,判定该任务所占用的内存值达到其内存占用阈值,将所述数据获取队列的下一数据块作为头数据块后,暂停向新的头数据块存储数据;若未达到,判定该任务所占用的内存值未达到其内存占用阈值,继续所述数据获取队列的头数据块的数据存储过程。
[0048]可选的,所述后台程序清理单元还用于在前台程序运行的过程中,查找与所述前台程序关联的后台程序,为所述后台程序添加保护标签;在检测到系统内存的占用量大于预设的清理阈值,对系统的后台程序执行清理时,所述后台程序清理单元用于将内存中未设置保护标签的后台程序按照优先级由高到低的顺序进行排序,按照顺序依次终止所述后台程序,直至被终止的后台程序的总内存占用量大于所述清理阈值。
[0049]可选的,所述后台程序优先级的判定依据为后台程序转入后台的时间,按照转入时间由早到晚的顺序对后台程序设置由高到低的优先级;
[0050]或者所述后台程序优先级的判定依据为后台程序占用内存的大小,按照占用内存由大到小的顺序对后台程序设置由高到低的优先级。
[0051]可选的,所述后台程序优先级的判定依据为后台程序占用内存的大小时,所述后台程序清理单元用于在执行终止操作前,检测后台程序转入后台的时间,判断所述时间是否早于预设的时间阈值;若是,则终止该后台程序,否则继续检测下一临时文件;其中所述时间阈值是距所述删除操作发生的时刻第一时间间隔前的系统时间。
[0052]从上面所述可以看出,本发明提供的一种管理程序内存占用量的方法和终端,根据系统后台程序的内存占用情况,动态调整前台程序每个任务的可用内存值,在保证全部程序占用的内存总量不超过系统的清理阈值的前提下,尽可能为前台程序提供充足的运行内存;既保证了前台程序的正常运行,又能够避免触发系统自动清理导致后台程序被意外终止,提高了移动终端上程序的可靠性。
【附图说明】
[0053]图1为本发明提供的一种管理程序内存占用量的方法的第一实施例的流程示意图;
[0054]图2为本发明提供的一种管理程序内存占用量的方法的第二实施例的流程示意图;
[0055]图3为本发明提供的一种管理程序内存占用量的方法的第三实施例的流程示意图;
[0056]图4为本发明提供的一种管理程序内存占用量的方法的第四实施例的流程示意图;
[0057]图5为本发明提供的一种管理程序内存占用量的方法的第五实施例的流程示意图;
[0058]图6为本发明提供的一种管理程序内存占用量的方法的第六实施例的流程示意图;
[0059]图7为本发明提供的一种管理程序内存占用量的终端的模块示意图。
【具体实施方式】
[0060]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0061 ] 第一实施例
[0062]图1为本发明提供的一种管理程序内存占用量的方法的第一实施例的流程示意图;如图所示,本实施例提供一种管理程序内存占用量的方法,包括:
[0063]S10,前台程序的任务获取和输出数据的过程中,检测程序任务的运行状态。其中所述运行状态需根据任务执行的具体任务确定;例如,对于执行网络视频播放的程序任务来说,其运行状态取决于当前网络状态(下载速度等)、视频文件清晰度(码率等)等,这些都会影响视频播放任务的内存占用量。
[0064]Sll,根据检测的每个程序任务的运行状态,为每个任务分配内存占用阈值。即根据每个任务的所要完成任务量的不同,按需求分配内存额度,具体的分配方法在下面的实施例中给出。
[0065]S12,检测并判断每个任务的内存占用情况:判断任一所述任务所占用的内存值是否达到其内存占用阈值;若是,则执行步骤S12a,否则执行步骤S12b;
[0066]S12a,若检测到任一所述任务所占用的内存值达到其内存占用阈值,暂停该任务获取数据的过程;
[0067]SI2b,若检测到该任务所占用的内存值未达到其内存占用阈值,继续该任务获取数据的过程。需要说明的是,任务内存的占用情况从其开始执行任务,呈现由O开始逐渐增长,直到达到某一定值后稳定的趋势。步骤S12b涵盖了所述增长的过程,这里不再赘述。
[0068]本实施例主要针对的是同时执行数据获取和数据输出的任务,在获取和输出之间还可以包含数据处理的过程;数据获取、处理、输出均会占用内存资源,其中数据处理、输出过程决定了任务执行任务的连续性和流畅性,通常无法暂停,在不影响任务正常完成任务的前提下,若要限制其占用的内存资源,主要方法为暂停任务的数据获取过程。
[0069]S13,若检测到系统内存的占用量达到预设的清理阈值,对系统的后台程序执行清理。上述步骤S10-S12用于管理程序本身的内存占用量,而步骤S13则是在步骤S10-S12处理完成后,仍然无法将前台程序和后台程序的总内存占用限定在一定数据内时,对系统内存执行清理;区别于现有的清理过程,本步骤中在执行清理时,会保留与前台程序相关联的部分后台程序,从而保证前台程序的正常运作,具体方法在下面的实施例中给出。
[0070]可以看出本实施例提供的方法,用于对前台程序的任务所能够占用的内存值执行动态调整;即每个任务的内存值并非固定不变,而是根据程序所运行的系统环境、系统内存占用量动态调整,从而在保证程序正常功能的前提下,优化每个任务的内存占用额度,以避免系统内存的总占用量过高导致自动清理后台程序。
[0071 ] 第二实施例
[0072]图2为本发明提供的一种管理程序内存占用量的方法的第二实施例的流程示意图;如图所示,本实施例在第一实施例的基础上,进一步说明了所述运行状态,包括:完成任务当前任务预期占用的最大内存值;所述步骤Sll,根据运行状态,为每个任务分配内存占用阈值,包括:
[0073]S20,将系统的可用内存值按照每个任务预期占用的最大内存值的比例分配给每个任务。仍然以视频播放程序为例,在理想的运行状态预期下,任务I需要占用50Mb的内存资源,任务2需要占用25Mb的内存资源,但经过计算得出系统的可用内存值仅为60Mb;此时,依本实施例,按照比例向任务I分配40Mb的内存占用阈值,向任务2分配20Mb的内存占用阈值,从而将程序的整体内存占用量限制在60Mb之内,使其不超过系统的可用内存值,避免触发自动清理过程。
[0074]上述分配过程前提是:需要保证任务正常完成任务。在第一实施例中已经说明,本实施例主要针对的是同时执行数据获取和数据输出的任务,在获取和输出之间还可以包含数据处理的过程;而数据处理、数据输出的过程所消耗的内存资源通常为定值,在具体实施时,采用减少数据获取过程的内存占用量的策略降低任务整体内存占用量。例如,任务I在理想状态下工作时,占用内存量为50Mb,其中1Mb的内存资源用于数据处理,1Mb的内存资源用于数据输出,30Mb的内存资源用于数据获取,则在将其内存占用量限定为40Mb内时,只提供20Mb的内存资源用于数据获取;由于数据获取过程占用的内存资源,主要是用于执行数据的预存,以避免网络波动造成的影响,因此适量降低其内存占用对于程序的主要功能不会造成过多损失。
[0075]第三实施例
[0076]图3为本发明提供的一种管理程序内存占用量的方法的第三实施例的流程示意图;如图所示,本实施例介绍上述是实施例中系统的可用内存值的计算方法,包括:
[0077]S30,获取系统当前全部后台程序的内存占用量;
[0078]S31,用所述清理阈值减去所述内存占用量得到所述可用内存值;或,
[0079]S32,用所述清理阈值减去所述内存占用量,再减去一缓冲值,得到所述可用内存值。步骤S31与步骤S32择一执行。
[0080]本实施例中步骤S31的方法较为容易理解。当系统内存的占用量达到清理阈值时,系统会执行后台程序清理,因此在保证不执行后台清理的前提下,前台程序所能够占用的最大内存量即为使用清理阈值减去后台程序内存占用量后得到的值。由于后台程序的内存占用量可能会发生变化,因此所述可用内存值应当定期计算、更新;具体的更新间隔根据具体情况确定,例如设置为5s至Imin之间的任意时间长度,可选的可以设置为30s。
[0081 ]步骤S32的方法,则是在步骤S31的基础上,再次减去一缓冲值得到可用内存值。由于前台程序和后台程序的内存占用量均为时刻改变的值,若仅采用步骤S31中的计算方法,则可能出现前一次可用内存值计算完毕后,后台程序的内存占用总量突然增加,导致总的内存占用量超出清理阈值引发系统自动清理的情况。因此额外减去一缓冲值,以提高本方法的稳定性与适应性。
[0082]可选的,所述清理阈值减去所述内存占用量的差乘以预设的缓冲值系数,其中所述缓冲系数为预设的O?0.5之间的实数。即,缓冲值设置为一个伴随后台程序内存占用量不断更新变化的值;当后台程序的内存占用量较低时,所述清理阈值减去所述内存占用量的结果较大,得到的缓冲值也较大,可以允许后台程序内存占用量上下波动的范围也较大;而后台程序的内存占用量较高时,所述清理阈值减去所述内存占用量的结果较小,得到的缓冲值也较小,可以允许后台程序内存占用量上下波动的范围也较小。这样在内存容量较为充裕时,可以允许后台程序的内存占用量发生较大程度的突然变化,提高容错;在内存容量较为紧张时,则对后台程序的内存占用量限制的较为严格,尽可能避免触发系统自动清理。
[0083]第四实施例
[0084]图4为本发明提供的一种管理程序内存占用量的方法的第四实施例的流程示意图;如图所示,本实施例提供的方法用于说明所述前台程序的任务如何完成数据获取和数据输出过程。每个所述任务包括数据获取队列和数据输出队列;所述数据获取队列和数据输出队列均包括多个数据块,其中第一个作为头数据块。
[0085]所述数据获取队列的头数据块用于存储所述任务获取的数据,若所述数据获取队列的头数据块存储的数据量达到预设的数据块容量,将其移动至所述数据输出队列尾部,将所述数据获取队列的下一数据块作为新的头数据块;
[0086]所述数据输出队列的头数据块用于输出数据,若所述数据输出队列的头数据块完成数据输出过程,删除其上保存的数据,将其移动至所述数据获取队列尾部,将所述数据输出队列的下一数据块作为新的头数据块。
[0087]在一些可选的实施例中,任务还包括数据处理队列。所述数据处理队列的头数据块用于存储任务获取的原始数据,并在所述原始数据经处理完毕得到用于执行输出新数据后,使用所述新数据替换所述原始数据,然后将所述头数据块移动至所述数据输出队列尾部,将所述数据处理队列的下一数据块作为新的头数据块。若任务包含数据处理队列时,则数据获取队列的头数据块存储的数据量达到预设的数据块容量,将其移动至所述数据处理队列尾部。
[0088]需要说明的时,每一队列中数据块的数量、数据块的总数量可能会发生改变;任务会根据需要,向系统申请新的内存地址以存储更多临时数据,此时数据块数量增加,任务的内存占用量增加;也可以在判定某数据块闲置后,向系统说明释放该数据块,即释放数据块占用的对应内存地址,此时数据块数量减少,任务的内存占用量减少。
[0089]本实施例给出的只是任务中数据流动的一个可选实施方式,在每个任务中,有一定资源用于执行数据获取工作,有另一些资源用于执行数据存储工作,不同工作根据占用的资源可以划分为以下几类:
[0090]I)从外部获取数据的过程(占用内存资源较为固定)
[0091]2)临时存储外部数据的过程(占用内存资源不定,但设定有一最大值,当超出此最大值后,则不再继续获取)
[0092]3)输出数据的过程(占用的内存资源较为固定)
[0093]可选的,还可以包括:
[0094]4)数据处理的过程(占用的内存资源较为固定)
[0095]5)临时存储经数据处理后得到的新数据的过程(占用内存资源不定,但设定有一最大值,当超出此最大值后,则不再继续获取)。
[0096]上述第一实施例中指出,根据每个任务的所要完成任务量的不同,按需求分配内存占用阈值,对应于本实施例,所述内存占用阈值主要用于限制上述第2和第5项的内存占用,即当内存占用量较高时,暂停数据获取和可能存在的数据处理过程,而继续执行数据输出过程,从而逐步降低临时数据的内存占用量;直到内存占用量重新回到较低水平后,再次启动数据获取和数据处理过程,从而将任务的内存占用量维持在一较为稳定的水平。
[0097]因此基于本实施例,第一实施例中步骤S12a,若检测到任一所述任务所占用的内存值达到其内存占用阈值,暂停该任务获取数据的过程,包括:
[0098]S40,将所述数据获取队列的下一数据块作为头数据块后,暂停新的头数据块的数据存储过程。
[0099]所述步骤S12b,若检测到该任务所占用的内存值未达到其内存占用阈值,继续该任务获取数据的过程,包括:
[0100]S41,继续所述数据获取队列的头数据块的数据存储过程。
[0101]第五实施例
[0102]图5为本发明提供的一种管理程序内存占用量的方法的第五实施例的流程示意图;如图所示,在第四实施例的基础上,步骤S12a,若检测到任一所述任务所占用的内存值达到其内存占用阈值,暂停该任务获取数据的过程,包括:
[0103]S50,若检测所述数据输出队列上的数据快数量达到预设的数量阈值,则判定该任务所占用的内存值达到其内存占用阈值;所述数量阈值为所述内存占用阈值除以所述数据块容量。
[0104]在获取内存占用阈值后,使用内存占用阈值除以单个数据块所能够容纳的数据量,并向下取整,得到数据块的数量阈值。在任务执行工作的过程中,使用数量阈值进行判定任务占用的内存值是否达到内存占用阈值,可以省去内存占用监控的步骤,一定程度上节约判定时间。
[0105]第六实施例
[0106]图6为本发明提供的一种管理程序内存占用量的方法的第六实施例的流程示意图;如图所示,以上第一至第五实施例均针对前台程序,其中心思想为如何将前台程序的内存占用量根据后台程序内存占用量和系统内存总量进行动态调整,从而在保证不触发系统自动清理的前提下,尽可能为前台程序的运行提供较大的内存空间。而本实施例则是针对一些意外情况下系统触发自动清理后,如何保存关键后台程序不被清理以保证前台程序正常运行。
[0107]在本实施例中,本发明的方法还包括:
[0108]S60,在前台程序运行的过程中,查找与所述前台程序关联后台程序,为所述后台程序添加保护标签。所述保护标签即为系统能够识别的特殊标志,对其形式不做限定。
[0109]所述S13,若检测到系统内存的占用量达到预设的清理阈值,对系统的后台程序执行清理,包括:
[0110]S61,将内存中未设置保护标签的后台程序按照优先级由高到低的顺序进行排序,按照顺序依次终止所述后台程序,直至被终止的后台程序的总内存占用量大于所述清理阈值。
[0111]本实施例提出了“保护标签”的概念。区别于现有技术中,一些内存清理程序中在执行清理过程时的“保留列表”等,本实施例中的保护标签除可以由用户专门添加外,还可以在程序设计过程中加入,使其作为不借助其他第三方软件即可被系统识别的特征。例如,为所述前台程序、与所述前台程序关联的后台程序均添加所述保护标签,则在执行系统清理前,系统可以获取到前台程序的保护标签,并相应查找后台程序中设置有相同保护标签的程序予以保留,这一过程无需用户另行指定。
[0112]在一些可选的实施方式中,所述后台程序优先级的判定依据为后台程序转入后台的时间,按照转入时间由早到晚的顺序对后台程序设置由高到低的优先级;或者,所述后台程序优先级的判定依据为后台程序占用内存的大小,按照占用内存由大到小的顺序对后台程序设置由高到低的优先级。
[0113]在另一实施方式中,所述后台程序优先级的判定依据为后台程序占用内存的大小时,所述S61中,按照优先级依次终止所述后台程序,包括:
[0114]S70,在执行终止操作前,检测后台程序转入后台的时间,判断所述时间是否早于预设的时间阈值;若是,终止该后台程序,若否,则继续检测下一后台程序。其中所述时间阈值是距所述删除操作发生的时刻第一时间间隔前的系统时间。本实施方式额外考虑了后台程序的时效性,即近期转入后台的程序,有较大可能性是用户希望再次使用的程序,因此在执行清理时对其进行保留,以尽可能保证用户操作的流畅度。所述第一时间间隔根据实际情况确定,可以设置为5min-5h,可选的,设置为lh。此外,需要说明的是所述第一时间间隔中的“第一”仅用于对这一名词进行标识,而非用于限定其用途。
[0115]图7为本发明提供的一种管理程序内存占用量的终端的模块示意图。如图所示,除上述实施例外,本发明的另一实施例还提供一种管理程序内存占用量的终端,包括:
[0116]状态检测单元70,用于在前台程序的任务获取和输出数据的过程中,检测程序任务的运行状态;
[0117]占用阈值分配单元71,用于根据检测的每个程序任务的运行状态,为每个任务分配内存占用阈值;
[0118]前台程序控制单元72,用于检测每个任务的内存占用情况,若检测到任一所述任务所占用的内存值达到其内存占用阈值,暂停该任务获取数据的过程;若检测到该任务所占用的内存值未达到其内存占用阈值,继续该任务获取数据的过程;
[0119]后台程序清理单元73,若检测到系统内存的占用量达到预设的清理阈值,对系统的后台程序执行清理。
[0120]可选的,所述运行状态包括:完成任务当前任务预期占用的最大内存值;所述占用阈值分配单元71用于将系统的可用内存值按照每个任务预期占用的最大内存值的比例分配给每个任务。
[0121]进一步,所述占用阈值分配单元71用于获取系统当前全部后台程序的内存占用量;用所述清理阈值减去所述内存占用量得到所述可用内存值;或,用所述清理阈值减去所述内存占用量,再减去一缓冲值,得到所述可用内存值。
[0122]可选的,所述缓冲值为:
[0123]所述清理阈值减去所述内存占用量的差乘以预设的缓冲值系数,其中所述缓冲系数为预设的O?0.5之间的实数。
[0124]在一可选的实施例中,每个所述任务包括数据获取队列和数据输出队列;所述数据获取队列和数据输出队列均包括多个数据块,其中第一个数据块作为头数据块。
[0125]所述前台程序控制单元72用于控制所述数据获取队列的头数据块存储所述任务获取的数据,若所述数据获取队列的头数据块存储的数据量达到预设的数据块容量,将其移动至所述数据输出队列尾部,将所述数据获取队列的下一数据块作为新的头数据块;
[0126]所述前台程序控制单元72还用于控制所述数据输出队列的头数据块输出数据,若所述数据输出队列的头数据块完成数据输出过程,删除头数据块保存的数据,将其移动至所述数据获取队列尾部,将所述数据输出队列的下一数据块作为新的头数据块;
[0127]所述占用阈值分配单元71用于把所述内存占用阈值除以所述数据块容量得到数量阈值;
[0128]所述前台程序控制单元72用于检测所述数据输出队列上的数据块数量是否达到所述数量阈值,若达到,判定该任务所占用的内存值达到其内存占用阈值,将所述数据获取队列的下一数据块作为头数据块后,暂停新的头数据块的数据存储过程;若未达到,判定该任务所占用的内存值未达到其内存占用阈值,继续所述数据获取队列的头数据块的数据存储过程。
[0129]进一步,所述后台程序清理单元73还用于在前台程序运行的过程中,查找与所述前台程序关联后台程序,为所述后台程序添加保护标签;在检测到系统内存的占用量大于预设的清理阈值,对系统的后台程序执行清理时,所述后台程序清理单元73用于将内存中未设置保护标签的后台程序按照优先级由高到低的顺序进行排序,按照顺序依次终止所述后台程序,直至被终止的后台程序的总内存占用量大于所述清理阈值。
[0130]可选的,所述后台程序优先级的判定依据为后台程序转入后台的时间,按照转入时间由早到晚的顺序对后台程序设置由高到低的优先级;
[0131]或者所述后台程序优先级的判定依据为后台程序占用内存的大小,按照占用内存由大到小的顺序对后台程序设置由高到低的优先级。
[0132]可选的,所述后台程序优先级的判定依据为后台程序占用内存的大小时,所述后台程序清理单元73用于在执行终止操作前,检测后台程序转入后台的时间,判断所述时间是否早于预设的时间阈值;若是,则终止该后台程序,否则继续检测下一临时文件;其中所述时间阈值是距所述删除操作发生的时刻第一时间间隔前的系统时间。
[0133]从上面所述可以看出,本发明提供的一种管理程序内存占用量的方法和终端,根据系统后台程序的内存占用情况,动态调整前台程序每个任务的可用内存值,在保证全部程序占用的内存总量不超过系统的清理阈值的前提下,尽可能为前台程序提供充足的运行内存;既保证了前台程序的正常运行,又能够避免触发系统自动清理导致后台程序被意外终止,提高了移动终端上程序的可靠性。
[0134]所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
[0135]另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。
[0136]尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
[0137]本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种管理程序内存占用量的方法,其特征在于,包括: 前台程序的任务获取数据的过程中,检测程序任务的运行状态; 根据检测的每个程序的任务的运行状态,为每个任务分配内存占用阈值; 检测每个任务的内存占用情况,若检测到任一所述任务所占用的内存值达到其内存占用阈值,暂停该任务获取数据的过程;若检测到该任务所占用的内存值未达到其内存占用阈值,继续该任务获取数据的过程; 若检测到系统内存的占用量达到预设的清理阈值,对系统的后台程序执行清理。2.根据权利要求1所述的方法,其特征在于,所述运行状态包括:完成任务当前任务预期占用的最大内存值;所述根据运行状态,为每个任务分配内存占用阈值,包括: 将系统的可用内存值按照每个任务预期占用的最大内存值的比例分配给每个任务。3.根据权利要求2所述的方法,其特征在于,获取所述可用内存值的方法包括: 获取系统当前全部后台程序的内存占用量; 用所述清理阈值减去所述内存占用量得到所述可用内存值;或,用所述清理阈值减去所述内存占用量,再减去一缓冲值,得到所述可用内存值。4.根据权利要求3所述的方法,其特征在于,所述缓冲值为: 所述清理阈值减去所述内存占用量的差乘以预设的缓冲值系数,其中所述缓冲系数为预设的O?0.5之间的实数。5.根据权利要求1所述的方法,其特征在于,每个所述任务包括数据获取队列和数据输出队列;所述数据获取队列和数据输出队列均包括有多个容量相同的数据块,其中第一个数据块作为头数据块; 所述前台程序的任务获取数据的过程包括: 所述数据获取队列的头数据块存储所述任务获取的数据,若所述数据获取队列的头数据块存储的数据量达到预设的数据块容量,将其移动至所述数据输出队列尾部,将所述数据获取队列的下一数据块作为新的头数据块; 所述数据输出队列的头数据块输出数据,若所述数据输出队列的头数据块完成数据输出过程,删除头数据块保存的数据,将其移动至所述数据获取队列尾部,将所述数据输出队列的下一数据块作为新的头数据块; 所述根据检测的每个程序任务的运行状态,为每个任务分配内存占用阈值包括: 用所述内存占用阈值除以所述数据块容量得到数量阈值; 所述若检测到任一所述任务所占用的内存值达到其内存占用阈值,暂停该任务获取数据的过程,包括: 若检测所述数据输出队列上的数据块数量达到所述数量阈值,则判定该任务所占用的内存值达到其内存占用阈值;将所述数据获取队列的下一数据块作为头数据块后,暂停向新的头数据块存储数据; 所述若检测到该任务所占用的内存值未达到其内存占用阈值,继续该任务获取数据的过程,包括: 若检测到所述数据输出队列上的数据块数量未达到所述数量阈值,则判定该任务所占用的内存值未达到其内存占用阈值;继续所述数据获取队列的头数据块的数据存储过程。6.根据权利要求1所述的方法,其特征在于,该方法还包括: 在前台程序运行的过程中,查找与所述前台程序关联后台程序,为所述后台程序添加保护标签; 所述若检测到系统内存的占用量大于预设的清理阈值,对系统的后台程序执行清理,包括: 将内存中未设置保护标签的后台程序按照优先级由高到低的顺序进行排序,按照顺序依次终止所述后台程序,直至被终止的后台程序的总内存占用量大于所述清理阈值。7.根据权利要求6所述的方法,其特征在于,所述后台程序优先级的判定依据为后台程序转入后台的时间,按照转入时间由早到晚的顺序对后台程序设置由高到低的优先级; 或者所述后台程序优先级的判定依据为后台程序占用内存的大小,按照占用内存由大到小的顺序对后台程序设置由高到低的优先级。8.根据权利要求7所述的方法,其特征在于,所述后台程序优先级的判定依据为后台程序占用内存的大小时,所述按照顺序依次终止所述后台程序,包括: 在对后台程序执行终止操作前,检测该后台程序转入后台的时间,判断所述时间是否早于预设的时间阈值;若是,则终止该后台程序,否则继续检测下一临时文件;其中所述时间阈值是距所述终止操作发生的时刻第一时间间隔前的系统时间。9.一种管理程序内存占用量的终端,其特征在于,包括: 状态检测单元,用于在前台程序的任务获取和输出数据的过程中,检测程序任务的运行状态; 占用阈值分配单元,用于根据检测的每个程序任务的运行状态,为每个任务分配内存占用阈值; 前台程序控制单元,用于检测每个任务的内存占用情况,若检测到任一所述任务所占用的内存值达到其内存占用阈值,暂停该任务获取数据的过程;若检测到该任务所占用的内存值未达到其内存占用阈值,继续该任务获取数据的过程; 后台程序清理单元,若检测到系统内存的占用量达到预设的清理阈值,对系统的后台程序执行清理。10.根据权利要求9所述的终端,其特征在于,所述运行状态包括:完成任务当前任务预期占用的最大内存值;所述占用阈值分配单元用于将系统的可用内存值按照每个任务预期占用的最大内存值的比例分配给每个任务。11.根据权利要求10所述的终端,其特征在于,所述占用阈值分配单元用于获取系统当前全部后台程序的内存占用量;用所述清理阈值减去所述内存占用量得到所述可用内存值;或,用所述清理阈值减去所述内存占用量,再减去一缓冲值,得到所述可用内存值。12.根据权利要求11所述的终端,其特征在于,所述缓冲值为: 所述清理阈值减去所述内存占用量的差乘以预设的缓冲值系数,其中所述缓冲系数为预设的O?0.5之间的实数。13.根据权利要求9所述的终端,其特征在于,每个所述任务包括数据获取队列和数据输出队列;所述数据获取队列和数据输出队列均包括多个数据块,其中第一个数据块作为头数据块; 所述前台程序控制单元用于控制所述数据获取队列的头数据块存储所述任务获取的数据,若所述数据获取队列的头数据块存储的数据量达到预设的数据块容量,将其移动至所述数据输出队列尾部,将所述数据获取队列的下一数据块作为新的头数据块; 所述前台程序控制单元还用于控制所述数据输出队列的头数据块输出数据,若所述数据输出队列的头数据块完成数据输出过程,删除头数据块保存的数据,将其移动至所述数据获取队列尾部,将所述数据输出队列的下一数据块作为新的头数据块; 所述占用阈值分配单元用于把所述内存占用阈值除以所述数据块容量得到数量阈值; 所述前台程序控制单元用于检测所述数据输出队列上的数据块数量是否达到所述数量阈值,若达到,判定该任务所占用的内存值达到其内存占用阈值,将所述数据获取队列的下一数据块作为头数据块后,暂停向新的头数据块存储数据;若未达到,判定该任务所占用的内存值未达到其内存占用阈值,继续所述数据获取队列的头数据块的数据存储过程。14.根据权利要求9所述的终端,其特征在于,所述后台程序清理单元还用于在前台程序运行的过程中,查找与所述前台程序关联的后台程序,为所述后台程序添加保护标签;在检测到系统内存的占用量大于预设的清理阈值,对系统的后台程序执行清理时,所述后台程序清理单元用于将内存中未设置保护标签的后台程序按照优先级由高到低的顺序进行排序,按照顺序依次终止所述后台程序,直至被终止的后台程序的总内存占用量大于所述清理阈值。15.根据权利要求14所述的终端,其特征在于,所述后台程序优先级的判定依据为后台程序转入后台的时间,按照转入时间由早到晚的顺序对后台程序设置由高到低的优先级; 或者所述后台程序优先级的判定依据为后台程序占用内存的大小,按照占用内存由大到小的顺序对后台程序设置由高到低的优先级。16.根据权利要求15所述的终端,其特征在于,所述后台程序优先级的判定依据为后台程序占用内存的大小时,所述后台程序清理单元用于在执行终止操作前,检测后台程序转入后台的时间,判断所述时间是否早于预设的时间阈值;若是,则终止该后台程序,否则继续检测下一临时文件;其中所述时间阈值是距所述删除操作发生的时刻第一时间间隔前的系统时间。
【文档编号】G06F9/445GK105824702SQ201610166699
【公开日】2016年8月3日
【申请日】2016年3月22日
【发明人】平凯
【申请人】乐视云计算有限公司