一种内存释放方法及装置与流程

文档序号:12040422阅读:166来源:国知局
一种内存释放方法及装置与流程
本发明涉及移动终端开发技术,尤其涉及一种内存释放方法及装置。

背景技术:
移动终端的内存通常指移动终端的物理内存,当存在应用进程时,移动终端会分配一部分物理内存给该应用进程,则这部分物理内存成为进程可使用内存,通常分配在托管堆上,由移动终端通过垃圾回收(GarbageCollection,GC)来管理,当移动终端的物理内存不足时,移动终端会根据垃圾回收(GarbageCollection,GC)策略清除一些没有被引用到的对象,释放空间,以解决内存不足(outofmemory,OOM)的问题。然而在进行与缓存文件相关的操作时,经常会出现OOM的问题,且很难通过GC策略解决。以位图(Bitmap)文件为例,当需要在一个界面上显示数十张图片乃至上百张图片时,即使使用类似于列表或者网络的控件来实现,限定一次显示的图片数量的上限,并在当图片较多时采用缩略图策略,当多次在一个界面上显示数目较多的图片,也会使大量内存一直被引用,移动终端无法通过GC策略完成回收,也很容易出现内存不足的问题。目前,对于进行文件相关操作时出现的内存不足的问题,存在三种解决方案。第一种解决方案,将文件存储为软引用(SoftReference)对象。软引用是一种需要通过SoftReference类来实现的引用方式,若一个对象为软引用对象,当移动终端出现OOM时,移动终端根据GC策略一定会回收该对象。这种方法的弊端在于,在一个界面上显示大量文件时,由于文件设置为软引用对象,当移动终端内存不足时,会被回收,导致在一个界面上的大量文件 需要被重复解析,系统处理效率低,影响用户体验。第二种解决方案,在内存中加载文件时对文件进行边界压缩。这种方法的弊端在于,当需要在同一界面上显示大量的文件时,依然无法解决OOM问题。第三种解决方案,若显示文件时需要大量的内存,则将存储文件的托管堆的大小调大。这种方法的弊端在于,在内存一定的情况下,将存储文件的托管堆的大小调大,势必会影响其他模块的正常使用。这三种解决方案,均不能在避免影响移动终端的正常使用的情况下有效的解决OOM问题。

技术实现要素:
本发明实施例提供一种内存释放方法及装置,以实现在避免影响移动终端的正常使用的情况下有效的解决OOM问题。一种内存释放方法,包括:对文件逐一进行解码,并将解码成功的文件逐一存储在第一缓存区中;当确定所述第一缓存区中剩余存储空间不足时,将所述第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区;当确定存在内存不足OOM时,将第二缓存区中存储的解码成功的文件删除。一种内存释放装置,包括:存储单元,用于对文件逐一进行解码,并将解码成功的文件逐一存储在第一缓存区中;转存单元,用于当确定所述第一缓存区中剩余存储空间不足时,将所述第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区;删除单元,用于当确定存在内存不足OOM时,将第二缓存区中存储的解 码成功的文件删除。本发明实施例提供一种内存释放方法及装置,对文件进行解码后,先将解码成功的文件存储在第一缓存区中,在第一缓存区中剩余存储空间不足时,当需要存储新的解码成功的文件时,将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区中,当确定存在OOM时,将第二缓存区中的解码成功的文件删除,因为第二缓存区中存储的文件为存储时间较长的文件,调用的概率较小,因此在存在OOM时删除第二缓存区中存储的文件不会影响移动终端的正常使用,且能够有效的解决OOM问题,从而实现了在避免影响移动终端的正常使用的情况下有效的解决OOM问题。附图说明图1为本发明实施例提供的一种内存释放方法流程图之一;图2为本发明实施例提供的一种链表哈希映射结构示意图;图3为本发明实施例提供的一种内存释放方法流程图之二;图4为本发明实施例提供的一种较佳的内存释放的方法流程图;图5为本发明实施例提供的一种内存释放装置结构示意图之一;图6为本发明实施例提供的一种内存释放装置结构示意图之二。具体实施方式本发明实施例提供一种内存释放方法及装置,对文件进行解码后,先将解码成功的文件存储在第一缓存区中,在第一缓存区中剩余存储空间不足时,当需要存储新的解码成功的文件时,将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区中,当确定存在OOM时,将第二缓存区中的解码成功的文件删除,因为第二缓存区中存储的文件为存储时间较长的文件,调用的概率较小,因此在存在OOM时删除第二缓存区中存储的文件不会影响移动终端的正常使用,且能够有效的解决OOM问题,从而实现了在避免影响移动终端 的正常使用的情况下有效的解决OOM问题。如图1所示,本发明实施例提供一种内存释放方法,包括:S101、对文件逐一进行解码,并将解码成功的文件逐一存储在第一缓存区中;S102、当确定第一缓存区中剩余存储空间不足时,将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区;S103、当确定存在OOM时,将第二缓存区中存储的解码成功的文件删除。本发明实施例设置了两个文件缓存区,对文件进行解码后,将解码成功的文件存储在第一缓存区内,当确定第一缓存区中剩余的存储空间不足时,则将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区中。当存在OOM问题时,将第二缓存区中存储的解码成功的文件删除,由于删除的是存储时间较长,即调用概率较小的文件,因此不会影响移动终端的正常使用,同时,也有效的解决了OOM问题。其中被解码的文件可以为位图文件。较佳的,为了方便实现S102,可以将第一缓存区设置为链表哈希映射(LinkedHashMap)式缓存区,如图2所示,LinkedHashMap具有先进先出的特点,将第一缓存区设置为LinkedHashMap式缓存区,并预先设定第一缓存区能够存储的文件的最多个数,则在第一缓存区中存储的解码成功的文件的个数达到设定个数后,若需要继续在第一缓存区中存储解码成功的文件,第一缓存区中存储时间最久的文件由于是最先进入第一缓存区的,此时就会从第一缓存区中移出,被转存到第二缓存区中。本领域的技术人员也可以将第二缓存区设置为并发式哈希映射(ConcurrentHashMap)式缓存区,ConcurrentHashMap可以同时接受多个进程的访问,能够有效的加快移动终端的处理速度。其中,第一缓存区及第二缓存区的大小可以由本领域技术人员根据经验及移动终端总内存的大小自行设定,例如,当移动终端的总内存大小为1G时, 可以将第一缓存区的内存大小设置为能够存储12-20个解码成功的文件,将第二缓存区的内存大小设置为能够存储6-10个解码成功的文件,较佳的,可以将第一缓存区的内存大小设置为能够存储16个解码成功的文件,将第二缓存区的内存大小设置为能够存储8个解码成功的文件,当移动终端的总内存大小为2G时,可以将第一缓存区的内存大小设置为能够存储24-40个解码成功的文件,将第二缓存区的内存大小设置为能够存储12-20个解码成功的文件,较佳的,可以将第一缓存区的内存大小设置为能够存储32个解码成功的文件,将第二缓存区的内存大小设置为能够存储16个解码成功的文件。当然,本领域的技术人员可以采用其他可行方式设置第一缓存区及第二缓存区,此处不再一一叙述。具体的,S102中确定第一缓存区中剩余存储空间不足,具体包括:确定需要存储的新的解码成功的文件大小大于所述第一缓存区中的未使用的内存大小时;或者确定所述第一缓存区中存储的解码成功的文件个数已达到设定个数。实际应用中,当需要存储新的解码成功的文件时,可以首先判断第一缓存区中未使用内存大小是否大于需要存储的新的解码成功的文件的大小,若需要存储的新的解码成功的文件的大小大于第一缓存区中未使用内存的大小,例如需要存储的新的解码成功的文件的大小为30M,而第一缓存区中的剩余存储空间为20M,则确定第一缓存去中剩余存储空间不足,需要将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区中去。或者,预先设定第一缓存区能够存储的解码成功的文件的最大个数,当需要存储新的解码成功的文件时,可以首先判断第一缓存区中存储的解码成功的文件的个数是否达到第一缓存区中能够存储的解码成功的文件的最大个数,若第一缓存区中存储的解码成功的文件个数达到第一缓存区能够存储的解码成功的文件的最大个数,例如设定的第一缓存区能够存储的解码成功的文件的个数为16个,则在需要存储新的解码成功的文件时,若确定了第一缓存区中已存储了16个解码成功的文件, 则需要先将第一缓存区中存储时间最久的解码成功的文件转存到第二缓存区中,再将新的解码成功的文件存储到第一缓存区中去。具体的,S103中确定存在OOM,包括:确定所述第二缓存区中未使用的内存大小小于当前需要转存到所述第二缓存区的解码成功的文件大小。实际应用中,若需要转存到第二缓存区中的解码成功的文件的大小大于第二缓存区中未使用的内存大小,则可以确定出现了OOM,此时,可以先将第二缓存区中缓存的解码成功的文件删除,再将需要转存到第二缓存区中的解码成功的文件存储到第二缓存区中去。进一步,由于软引用是一种需要通过SoftReference类来实现的引用方式,若一个对象为软引用对象,当移动终端出现OOM时,移动终端通常会删除该对象。因此可以将第二存储区中存储的文件存储为软引用对象,并设定当出现OOM时,移动终端将软引用对象删除,从而解决OOM的问题。具体的,S102中将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区,具体为:将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区,并存储成软引用对象;则S103具体为:当确定存在OOM时,将软引用对象删除。当然,本领域的技术人员可以采用其他可行方式在第二存储区中存储解码成功的文件;当然,本领域的技术人员也可以通过其他可行方式实现S103,此处仅提供一种较佳的实现方式,不再一一叙述。解码成功的文件被存储到第一缓存区或第二缓存区后,当需要获取文件时,可以先在第一缓存区中查找需要获取的文件,若确定第一缓存区中不存在需要获取的文件,则在第二缓存区中进行查找,当确定第二缓存区中不存在需要获取的文件时,可以对需要获取的文件进行解码,具体的,如图3所示,本 发明实施例提供的内存释放方法还包括:S301、确定需要获取解码成功的文件时,在第一缓存区中查找需获取的解码成功的文件;S302、确定第一缓存区中不存在需要获取的解码成功的文件时,在第二缓存区中查找需获取的解码成功的文件;S303、确定第二缓存区中不存在需要获取的解码成功的文件时,对需要获取的解码成功的文件所对应的原文件进行解码。本发明实施例提供一种较佳的内存释放方法,如图4所示,该方法包括:S401、对文件进行解码,并将解码成功的文件存储在LinkedHashMap缓存区中;S402、在LinkedHashMap缓存区中存储的解码成功的文件的个数达到设定个数后,当需要存储新的解码成功的文件时,将LinkedHashMap缓存区中存储时间最长的解码成功的文件转存到ConcurrentHashMap缓存区;S403、当确定存在OOM时,将ConcurrentHashMap缓存区中存储的解码成功的文件删除。S404、确定需要获取文件时,在LinkedHashMap缓存区中查找需获取的解码成功的文件;S405、确定LinkedHashMap缓存区中不存在需要获取的解码成功的文件时,在ConcurrentHashMap缓存区中查找需获取的解码成功的文件;S406、确定ConcurrentHashMap缓存区中不存在需要获取的解码成功的文件时,对需要获取的解码成功的文件的所对应的原文件进行解码。如图5所示,本发明实施例提供一种内存释放装置,包括:存储单元501,用于对文件逐一进行解码,并将解码成功的文件逐一存储在第一缓存区中;转存单元502,用于当确定第一缓存区中剩余存储空间不足时,将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区;删除单元503,用于当确定存在OOM时,将第二缓存区中存储的解码成功的文件删除。本发明实施例设置了两个文件缓存区,对文件进行解码后,将解码成功的文件存储在第一缓存区内,当确定第一缓存区中剩余的存储空间不足时,则将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区中。当存在OOM问题时,将第二缓存区中存储的解码成功的文件删除,由于删除的是存储时间较长,即调用频率较低的文件,因此不会影响移动终端的正常使用,同时,也有效的解决了OOM问题。较佳的,为了更方便实现在第一缓存区中存储的解码成功的文件的个数达到设定个数后,当需要存储新的解码成功的文件时,将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区,可以将第一缓存区设置为链表哈希映射(LinkedHashMap)式缓存区,LinkedHashMap具有先进先出的特点,将第一缓存区设置为LinkedHashMap式缓存区,并预先设定第一缓存区能够存储的文件的最多个数,则在第一缓存区中存储的解码成功的文件的个数达到设定个数后,若需要继续在第一缓存区中存储解码成功的文件,第一缓存区中存储时间最久的文件由于是最先进入第一缓存区的,此时就会从第一缓存区中移出,被转存到第二缓存区中。本领域的技术人员也可以将第二缓存区设置为并发式哈希映射(ConcurrentHashMap)式缓存区,ConcurrentHashMap可以同时接受多个进程的访问,能够有效的加快移动终端的处理速度。当然,本领域的技术人员可以采用其他可行方式设置第一缓存区及第二缓存区,此处不再一一叙述。其中,第一缓存区及第二缓存区的大小可以由本领域技术人员根据经验及移动终端总内存的大小自行设定,例如,当移动终端的总内存大小为1G时,可以将第一缓存区的内存大小设置为能够存储12-20个解码成功的文件,将第二缓存区的内存大小设置为能够存储6-10个解码成功的文件,较佳的,可以 将第一缓存区的内存大小设置为能够存储16个解码成功的文件,将第二缓存区的内存大小设置为能够存储8个解码成功的文件,当移动终端的总内存大小为2G时,可以将第一缓存区的内存大小设置为能够存储24-40个解码成功的文件,将第二缓存区的内存大小设置为能够存储12-20个解码成功的文件,较佳的,可以将第一缓存区的内存大小设置为能够存储32个解码成功的文件,将第二缓存区的内存大小设置为能够存储16个解码成功的文件。具体的,转存单元502确定第一缓存区中剩余存储空间不足,具体用于:确定需要存储的新的解码成功的文件大小大于第一缓存区中的未使用的内存大小;或者确定第一缓存区中存储的解码成功的文件个数已达到设定个数时。实际应用中,当需要存储新的解码成功的文件时,可以首先判断第一缓存区中未使用内存大小是否大于需要存储的新的解码成功的文件的大小,若需要存储的新的解码成功的文件的大小大于第一缓存区中未使用内存的大小,例如需要存储的新的解码成功的文件的大小为30M,而第一缓存区中的剩余存储空间为20M,则确定第一缓存去中剩余存储空间不足,需要将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区中去。或者,预先设定第一缓存区能够存储的解码成功的文件的最大个数,当需要存储新的解码成功的文件时,可以首先判断第一缓存区中存储的解码成功的文件的个数是否达到第一缓存区中能够存储的解码成功的文件的最大个数,若第一缓存区中存储的解码成功的文件个数达到第一缓存区能够存储的解码成功的文件的最大个数,例如设定的第一缓存区能够存储的解码成功的文件的个数为16个,则在需要存储新的解码成功的文件时,若确定了第一缓存区中已存储了16个解码成功的文件,则需要先将第一缓存区中存储时间最久的解码成功的文件转存到第二缓存区中,再将新的解码成功的文件存储到第一缓存区中去。具体的,删除单元503确定存在OOM,用于:确定第二缓存区中未使用的内存大小小于当前需要转存到所述第二缓存 区的解码成功的文件大小。实际应用中,若需要转存到第二缓存区中的解码成功的文件的大小大于第二缓存区中未使用的内存大小,则可以确定出现了OOM,此时,可以先将第二缓存区中缓存的解码成功的文件删除,再将需要转存到第二缓存区中的解码成功的文件存储到第二缓存区中去。进一步,由于软引用是一种需要通过SoftReference类来实现的引用方式,若一个对象为软引用对象,当移动终端出现OOM时,移动终端通常会删除该对象。因此可以将第二存储区中存储的文件存储为软引用对象,并设定当出现OOM时,移动终端将软引用对象删除,从而解决OOM的问题。具体的,转存单元502将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区,具体用于:将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区,并存储成软引用对象;则删除单元503具体用于:当确定存在OOM时,将软引用对象删除。当然,本领域的技术人员可以采用其他可行方式在第二存储区中存储解码成功的文件;当然,本领域的技术人员也可以通过其他可行方式实现删除单元503,此处仅提供一种较佳的实现方式,不再一一叙述。解码成功的文件被存储到第一缓存区或第二缓存区后,当需要获取文件时,可以先在第一缓存区中查找需要获取的文件,若确定第一缓存区中不存在需要获取的文件,则在第二缓存区中进行查找,当确定第二缓存区中不存在需要获取的文件时,再对需要获取的文件进行解码,具体的,如图6所示,本发明实施例提供的内存释放装置还包括:第一查找单元504,用于确定需要获取解码成功的文件时,在第一缓存区中查找需获取的解码成功的文件;第二查找单元505,用于确定第一缓存区中不存在需要获取的解码成功的 文件时,在第二缓存区中查找需获取的解码成功的文件;解码单元506,用于确定第二缓存区中不存在需要获取的解码成功的文件时,对需要获取的解码成功的文件所对应的原文件进行解码。本发明实施例提供一种内存释放方法及装置,对文件进行解码后,先将解码成功的文件存储在第一缓存区中,在第一缓存区中剩余存储空间不足时,当需要存储新的解码成功的文件时,将第一缓存区中存储时间最长的解码成功的文件转存到第二缓存区中,当确定存在OOM时,将第二缓存区中的解码成功的文件删除,因为第二缓存区中存储的文件为存储时间较长的文件,调用的概率较小,因此在存在OOM时删除第二缓存区中存储的文件不会影响移动终端的正常使用,且能够有效的解决OOM问题,从而实现了在避免影响移动终端的正常使用的情况下有效的解决OOM问题。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个 流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1