一种内存优化方法和装置的制造方法

文档序号:10534618阅读:359来源:国知局
一种内存优化方法和装置的制造方法
【专利摘要】本发明公开了一种内存优化的方法和装置,包括:在前台程序运行的过程中,检测运行中用于调取和执行资源文件的服务进程的状态;其中,所述资源文件配有大小不同的至少两个副本;若检测到有服务进程暂停,将该服务进程终止;若检测到有服务进程调取资源文件,获取系统当前的内存占用状态,根据内存占用状态调取该资源文件适当大小的副本;若检测到服务进程的资源文件副本执行完毕,释放该资源文件副本。本发明提供的一种内存优化方法和装置,通过及时终止暂停进程、选取适当大小的资源文件副本和及时释放资源文件副本等方式,在保证用户体验的前提下尽可能降低前台程序的内存占用量,从而降低系统执行内存清理的频率,提高软件运行的流畅度。
【专利说明】
—种内存优化方法和装置
技术领域
[0001]本发明涉及移动设备内存管理技术领域,特别是指一种内存优化方法和装置。
【背景技术】
[0002]当前主流智能终端上运行的软件,主要由后台的服务进程和服务进程调用的资源文件组成:部分服务进程完成软件内部的计算和处理工作,另一部分服务进程通过调用资源文件维持软件的交互界面。随着软件功能的不断扩充,软件在运行时占用的系统内存容量也越来越多,导致部分智能终端在运行时发生卡顿等问题;智能终端发生卡顿的主要原因是系统内存不足,当系统检测到内存余量不足以支持完成软件的功能时,会对后台废弃的资源文件进行清理,以扩充可用内存,对后台废弃的资源文件进行清理的过程本身会对系统造成负担,导致卡顿的问题。
[0003]现有的软件对于已经停止的服务进程以及部分使用完毕的资源文件没有有效的处理方法,导致系统在对后台废弃的资源文件进行清理时,将这部分内容判定为仍然在使用,从而将其保留在内存中,每次内存清理过程删除的资源文件很少,间隔很短时间就需要再次进行清理,从而造成智能终端的频繁卡顿。

【发明内容】

[0004]有鉴于此,本发明的目的在于提出一种内存优化方法和装置,用以实现对系统内存的有效清理,通过减少清理次数提高智能终端运行的流畅程度。
[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]图3为本发明提供的一种内存优化的方法的可选实施例的流程示意图;
[0037]图4为本发明提供的一种内存优化的方法的可选实施例的流程示意图;
[0038]图5为本发明提供的一种内存优化的方法的可选实施例的流程示意图;
[0039]图6为本发明提供的一种内存优化的装置的实施例的框图。
【具体实施方式】
[0040]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0041]图1为本发明提供的一种内存优化的方法的实施例的流程示意图。如图所示,在本发明提供的一种内存优化的方法的实施例中,包括:
[0042]S10,为资源文件设置大小不同的至少两个副本;在前台程序运行的过程中,检测运行中用于调取和执行资源文件的服务进程的状态:
[0043]Sll,检测是否有服务进程暂停;若有服务进程暂停,执行步骤S12。
[0044]SI 2,将该服务进程终止。
[0045]在现有技术方案中,暂停的服务进程会被挂起而不会被终止,这样一方面方便再次调用,另一方面在程序编写过程中可以减少判断步骤,缩小程序容量。但是,针对移动终端,特别是配置较低的移动终端来说,服务进程是内存占用的主要部分,挂起的服务进程会占用大量的内存资源,从而使得每次执行系统清理后可用的内存资源量仍然很少,很快就会再次触发清理,引起程序卡顿。
[0046]S13,检测是否有服务进程调取资源文件;若有服务进程调取资源文件,执行步骤S14。
[0047]S14,获取系统当前的内存占用状态,根据所述内存占用状态调取该资源文件适当大小的副本。
[0048]步骤SlO和S14中出现的“副本”是指:为同一内容设置多种不同规格的文件,例如,对于某个位置出现的图片提供多种不同分辨率的文件;对于某一特效动画提供不同长度、不同分辨率的动态图像,甚至静态图片等。设置这些副本的目的是在调用副本时可以根据系统内存的剩余量选择合适大小的副本使用,在保证用户体验的前提下,尽可能防止内存占用过多导致触发清理。
[0049]S15,检测是否有服务进程的资源文件副本执行完毕;若有服务进程的资源文件副本执行完毕,执行步骤S16。
[0050]S16,释放该资源文件副本。
[0051]与服务进程类似,在现有技术中,资源文件副本在执行完毕后也不会立刻被清理,而是伴随其所属服务进程挂起,这就导致一些服务进程实际使用中的资源文件量很少,但是无用的资源文件占用的内存空间却很大,并且这些无用的资源文件在系统执行清理时会被判定为正在被服务进程而无法得到清理,同理也会引起程序频繁清理内存并卡顿。
[0052]本实施例对服务进程运行状态进行监控,通过及时终止暂停进程、选取适当大小的资源文件副本和及时释放资源文件副本等方式,在保证用户体验的前提下尽可能降低前台程序的内存占用量,从而降低系统执行内存清理的频率,提高软件运行的流畅度。
[0053]图2为本发明提供的一种内存优化的方法的可选实施例的流程示意图。如图所示,在可选的实施例中,步骤Sll,检测是否有服务进程暂停,包括:
[0054]S20,检测所述服务进程是否正在使用资源文件;若所述服务进程没有使用资源文件,判定所述服务进程暂停;若所述服务进程正在使用资源文件,执行步骤S21。
[0055]S21,检测该资源文件是否处于系统后台;若该资源文件处于系统后台,判定所述服务进程暂停。
[0056]在本实施例中,将服务进程暂停这一状态的判断标准进行了扩展。除了通常意义上服务进程没有使用资源文件则判定其暂停外,若该服务进程正在使用的资源文件处于系统后台,也判定该服务进程暂停;这样当此服务进程所使用的资源文件(例如一些特效或操作界面等)暂时隐藏在后台时,则将支持该资源文件的服务进程也判定为暂停;并且将暂停的服务进程终止,释放其占用的内存资源,以降低程序的内存使用量。
[0057]图3为本发明提供的一种内存优化的方法的可选实施例的流程示意图。如图所示,在可选的实施例中,步骤S14,获取系统当前的内存占用状态,根据所述内存占用状态调取该资源文件适当大小的副本,包括:
[0058]S30,获取系统剩余的可用内存值。
[0059]S31,将所述资源文件的副本按照数据量从大到小的顺序排序。
[0060]S32,依次判断所述资源文件的副本是否小于所述系统剩余的可用内存值;若是,调取第一个小于所述系统剩余的可用内存值的所述副本。
[0061]本实施例中的方法通过选取当前系统剩余的可用内存值所能够容纳的最大的资源文件副本,在不触发系统内存清理的前提下使用数据量尽可能大、品质尽可能高的资源副本,从而带来较佳的用户体验。
[0062]图4为本发明提供的一种内存优化的方法的可选实施例的流程示意图。如图所示,在可选的实施例中,所述资源文件预设状态标识;步骤S16,释放该资源文件副本。包括:
[0063]S40,获取所述资源文件副本的使用状态,根据所述使用状态判断该资源文件副本是否执行完毕;若判定该资源文件副本执行完毕,将其状态标识设置为废弃。
[0064]S41,在检测到系统内存的可用值小于预设的清理阈值后,将状态标识为废弃的所述资源文件副本从系统内存中移除。
[0065]本实施例提供了一种解决资源文件清理不彻底的问题的方法。前面已经解释过,资源文件副本在执行完毕后也不会立刻被清理,而是伴随其所属服务进程挂起,这就导致一些服务进程实际使用中的资源文件量很少,但是无用的资源文件占用的内存空间却很大,并且这些无用的资源文件在系统执行清理时会被判定为正在被服务进程而无法得到清理,同理也会引起程序频繁清理内存并卡顿。
[0066]因此,本实施例对这些执行完毕的无用资源文件的副本设置状态标识为废弃,当执行清理时即可移除这些带有废弃标识的资源文件副本,而不需要等待经过足够时间该资源文件副本被自动判定为无用。这样做可以有效提高每次系统内存清理的效率,从而降低内存清理的频率。
[0067]图5为本发明提供的一种内存优化的方法的可选实施例的流程示意图。如图所示,在可选的实施例中,所述服务进程包括预设的内存占用预期值;步骤S41,在检测到系统内存的可用值小于预设的清理阈值后,将状态标识为废弃的所述资源文件从系统内存中移除中,所述清理阈值的计算方法包括:
[0068]S50,计算系统内存中正在运行的所述服务进程内存占用预期值的和。
[0069]内存占用预期值是针对服务进程设置的估计值,根据不同服务进程所执行任务的不同,预先估算该服务进程所需要占用的内存资源从而得到该服务进程的内存占用预期值。
[0070]S51,使用系统内存的总量减去所述服务进程内存占用预期值的和,再减去预设的调整值,得到所述清理阈值。
[0071]这里预设的调整值用于平衡服务进程在实际运行过程中可能发生的,占用实际内存量大于其内存占用预期值的情况。在一些情况下,若经过上述计算后得到的清理阈值为不大于O的值,则说明服务进程较多;在可选的实施例中,若经过计算后得到的清理阈值为不大于O的值,将所述清理阈值设置为系统内存的总量乘以预设的清理系数。这里清理系数的较佳取值范围是[0.7,I)。
[0072]S52,若检测到所述服务进程内存占用预期值的和发生改变,根据改变后的所述内存占用预期值的和重新计算所述清理阈值。
[0073]步骤S52用于根据服务进程运行状态的变化计算更新清理阈值。当内存进程较多时,会计算得到一个较小的清理阈值;当内存进程较少时,会计算得到一个较大的清理阈值。这种动态调整的设定方法相对于将清理阈值设置为一个定值,可以在内存进程较多时得到一个较小的清理阈值,从而避免因清理阈值过大引起频繁的内存清理;同理在内存进程较少时,可以得到一个较大的清理阈值,在必要时仍然对内存执行清理,及时移除无用的服务进程或资源文件,以保证新的服务进程被启用时有充足的系统内存可以使用。
[0074]图6为本发明提供的一种内存优化的装置的实施例的框图。如图所示,在本发明的另一实施例中,还提供一种内存优化的装置,在所述装置内为资源文件设置大小不同的至少两个副本,装置包括:
[0075]服务进程单元60,用于在前台程序运行的过程中,检测运行中用于调取和执行资源文件的服务进程的状态。
[0076]服务终止单元61,用于在检测到有服务进程暂停时,将该服务进程终止。
[0077]副本选择单元62,用于在检测到有服务进程调取资源文件时,获取系统当前的内存占用状态,根据所述内存占用状态调取该资源文件适当大小的副本。
[0078]副本释放单元63,用于在检测到所述服务进程的资源文件副本执行完毕时,释放该资源文件副本。
[0079]本实施例中的装置对服务进程运行状态进行监控,通过及时终止暂停进程、选取适当大小的资源文件副本和及时释放资源文件副本等方式,在保证用户体验的前提下尽可能降低前台程序的内存占用量,从而降低系统执行内存清理的频率,提高软件运行的流畅度。
[0080]在可选的实施例中,所述服务终止单元61用于检测所述服务进程是否正在使用资源文件;若所述服务进程没有使用资源文件,判定所述服务进程暂停;若所述服务进程正在使用资源文件,继续检测该资源文件是否处于系统后台;若该资源文件处于系统后台,判定所述服务进程暂停。
[0081]在可选的实施例中,所述副本选择单元62用于获取系统剩余的可用内存值;将所述资源文件的副本按照数据量从大到小的顺序排序;依次判断所述资源文件的副本是否小于所述系统剩余的可用内存值;若是,调取该副本。
[0082]在可选的实施例中,所述装置包括内存清理单元64;所述副本释放单元63用于获取所述资源文件的使用状态,根据所述使用状态判断该资源文件是否执行完毕;若判定该资源文件执行完毕,将其状态标识设置为废弃;所述内存清理单元64用于在检测到系统内存的可用值小于预设的清理阈值后,将状态标识为废弃的所述资源文件从系统内存中移除。
[0083]在可选的实施例中,所述服务进程包括预设的内存占用预期值;所述存清理单元64用于计算系统内存中正在运行的所述服务进程内存占用预期值的和;使用系统内存的总量减去所述服务进程内存占用预期值的和,再减去预设的调整值,得到所述清理阈值;所述内存清理单元64还用于检测到所述服务进程内存占用预期值的和发生改变时,根据改变后的所述内存占用预期值的和重新计算所述清理阈值。
[0084]从上面所述可以看出,本发明提供的一种内存优化方法和装置,通过及时终止暂停进程、选取适当大小的资源文件副本和及时释放资源文件副本等方式,在保证用户体验的前提下尽可能降低前台程序的内存占用量,从而降低系统执行内存清理的频率,提高软件运行的流畅度,提高了程序在移动终端,特别是低配置移动终端的泛用性。
[0085]需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一” “第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
[0086]所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
[0087]另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。
[0088]尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
[0089]本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种内存优化的方法,其特征在于,包括: 在前台程序运行的过程中,检测运行中用于调取和执行资源文件的服务进程的状态,其中,所述资源文件配有大小不同的至少两个副本; 若检测到有服务进程暂停,将该服务进程终止; 若检测到有服务进程调取资源文件,获取系统当前的内存占用状态,根据所述内存占用状态调取该资源文件适当大小的副本; 若检测到所述服务进程的资源文件副本执行完毕,释放该资源文件副本。2.根据权利要求1所述的方法,其特征在于,所述若检测到有服务进程暂停,将该服务进程终止,包括: 检测所述服务进程是否正在使用资源文件;若所述服务进程没有使用资源文件,判定所述服务进程暂停; 若所述服务进程正在使用资源文件,继续检测该资源文件是否处于系统后台;若该资源文件处于系统后台,判定所述服务进程暂停。3.根据权利要求1所述的方法,其特征在于,所述若检测到有服务进程调取资源文件,获取系统当前的内存占用状态,根据所述内存占用状态调取该资源文件适当大小的副本,包括: 获取系统剩余的可用内存值; 将所述资源文件的副本按照数据量从大到小的顺序排序; 依次判断所述资源文件的副本是否小于所述系统剩余的可用内存值;若是,调取第一个小于所述系统剩余的可用内存值的所述副本。4.根据权利要求1所述的方法,其特征在于,所述资源文件预设状态标识;所述若检测到所述服务进程的资源文件副本执行完毕,释放该资源文件副本,包括: 获取所述资源文件副本的使用状态,根据所述使用状态判断该资源文件副本是否执行完毕;若判定该资源文件副本执行完毕,将其状态标识设置为废弃; 在检测到系统内存的可用值小于预设的清理阈值后,将状态标识为废弃的所述资源文件副本从系统内存中移除。5.根据权利要求4所述的方法,其特征在于,所述服务进程包括预设的内存占用预期值;所述在检测到系统内存的可用值小于预设的清理阈值后,将状态标识为废弃的所述资源文件副本从系统内存中移除中,所述清理阈值的计算方法包括: 计算系统内存中正在运行的所述服务进程内存占用预期值的和; 使用系统内存的总量减去所述服务进程内存占用预期值的和,再减去预设的调整值,得到所述清理阈值; 若检测到所述服务进程内存占用预期值的和发生改变,根据改变后的所述内存占用预期值的和重新计算所述清理阈值。6.—种内存优化的装置,其特征在于,装置包括: 服务进程单元,用于在前台程序运行的过程中,检测运行中用于调取和执行资源文件的服务进程的状态,其中,所述资源文件配有大小不同的至少两个副本; 服务终止单元,用于在检测到有服务进程暂停时,将该服务进程终止; 副本选择单元,用于在检测到有服务进程调取资源文件时,获取系统当前的内存占用状态,根据所述内存占用状态调取该资源文件适当大小的副本; 副本释放单元,用于在检测到所述服务进程的资源文件副本执行完毕时,释放该资源文件副本。7.根据权利要求6所述的装置,其特征在于,所述服务终止单元用于检测所述服务进程是否正在使用资源文件;若所述服务进程没有使用资源文件,判定所述服务进程暂停;若所述服务进程正在使用资源文件,继续检测该资源文件是否处于系统后台;若该资源文件处于系统后台,判定所述服务进程暂停。8.根据权利要求6所述的装置,其特征在于,所述副本选择单元用于获取系统剩余的可用内存值;将所述资源文件的副本按照数据量从大到小的顺序排序;依次判断所述资源文件的副本是否小于所述系统剩余的可用内存值;若是,则所述副本选择单元还用于调取第一个小于所述系统剩余的可用内存值的所述副本。9.根据权利要求6所述的装置,其特征在于,包括内存清理单元;所述副本释放单元用于获取所述资源文件的使用状态,根据所述使用状态判断该资源文件是否执行完毕;若判定该资源文件执行完毕,将其状态标识设置为废弃;所述内存清理单元用于在检测到系统内存的可用值小于预设的清理阈值后,将状态标识为废弃的所述资源文件从系统内存中移除。10.根据权利要求9所述的装置,其特征在于,所述服务进程包括预设的内存占用预期值;所述存清理单元用于计算系统内存中正在运行的所述服务进程内存占用预期值的和;使用系统内存的总量减去所述服务进程内存占用预期值的和,再减去预设的调整值,得到所述清理阈值;所述内存清理单元还用于检测到所述服务进程内存占用预期值的和发生改变时,根据改变后的所述内存占用预期值的和重新计算所述清理阈值。
【文档编号】G06F9/50GK105893149SQ201610195785
【公开日】2016年8月24日
【申请日】2016年3月30日
【发明人】龙佳
【申请人】乐视控股(北京)有限公司, 乐视网信息技术(北京)股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1