CN104699626B - 终端内存处理方法、装置及终端 - Google Patents
终端内存处理方法、装置及终端 Download PDFInfo
- Publication number
- CN104699626B CN104699626B CN201310669799.9A CN201310669799A CN104699626B CN 104699626 B CN104699626 B CN 104699626B CN 201310669799 A CN201310669799 A CN 201310669799A CN 104699626 B CN104699626 B CN 104699626B
- Authority
- CN
- China
- Prior art keywords
- cache
- cache region
- memory
- level
- terminal
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种终端内存处理方法、装置及终端,该方法包括:将终端内存划分为多个缓存区域;对该多个缓存区域进行分级;依据分级后的缓存区域对终端内存中的缓存对象进行分级缓存处理,通过本发明,解决了相关技术中存在终端内存相对紧张同时又对终端应用的用户体验要求很高的矛盾的问题,进而达到了实现对内存的高速缓存,有效解决内存紧张与应用体验相矛盾,提高用户体验的效果。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种终端内存处理方法、装置及终端。
背景技术
在移动互联网应用风靡的背景下,移动终端上的应用要想脱颖而出,对于应用来说良好的体验是必不可少的。如当应用从网络中获取网络图片数据时,用户完全有可能做一些重复性的操作去查看相同的图片信息。对于这样的问题,通常会有两种解决方法:一种是把过去查看过的图片信息保存在内存中,每一个存储了图片信息的Java对象的生命周期都贯穿整个应用程序生命周期,此种方法加快了数据的访问速度,但往往容易造成OutOfMemoryException;另一种是当用户开始查看其它图片信息的时候,把存储了当前的图片信息的Java对象结束引用,使得垃圾收集器可以回收其所占用的内存空间,当用户再次需要浏览该图片信息的时候,重新获取图片信息,此种方法大大降低了OutOfMemoryException发生的可能性,但降低了用户的体验。
显然第一种实现方法将造成大量的内存浪费,而第二种实现的缺陷在于即使垃圾收集线程还没有进行垃圾收集,包含图片信息的对象仍然完好的保存在内存中,应用程序也要重新构建一个对象。
例如,在专利申请号为CN201110454870.2的中国专利“基于Android系统的图片加载方法和设置”中公开了一种Android系统的图片加载方法和装置。该专利仅对图片加载采用软引用的方法。该方法包括:A、发出图片加载任务的指令,并初始化存储图片的软引用;B、判断所述软引用中是否存储有所需要显示的图片;C、若所述软引用中没有存储所述要显示的图片,则运行图片加载线程进行加载;若所述软引用中存储有所述所要显示的图片,则直接进入步骤F;D、若内存不足,则自动回收所述软引用中存储的图片直至所述内存充足;E、所述所要显示的图片加载完成,并存储于所述软引用中;F、从所述软引用中直接读取所述所要显示的图片并显示。对于移动设备来说,内存资源相对来说比较紧缺,仅适用软引用未必能够达到最佳的缓存效果。
因此,在相关技术中存在终端内存相对紧张同时又对终端应用的用户体验要求很高的矛盾的问题。
发明内容
本发明提供了一种终端内存处理方法及装置,以至少解决相关技术中存在终端内存相对紧张同时又对终端应用的用户体验要求很高的矛盾的问题。
根据本发明的一个方面,提供了一种终端内存处理方法,包括:将所述终端内存划分为多个缓存区域;对所述多个缓存区域进行分级;依据分级后的所述缓存区域对所述终端内存中的缓存对象进行分级缓存处理。
优选地,将所述终端内存划分为所述多个缓存区域包括:将所述终端内存划分为一级缓存区域和二级缓存区域,其中,所述一级缓存区域内的缓存对象禁止被垃圾回收器回收,所述二级缓存区域内的缓存对象在满足预定存储容量时被所述垃圾回收器回收。
优选地,依据分级后的所述缓存区域对所述终端内存中的缓存对象进行分级缓存处理包括:判断所述一级缓存区域内缓存的对象是否超过预定容量;在判断结果为是的情况下,将所述一级缓存区域内缓存的缓存对象转换为在所述二级缓存区域进行缓存。
优选地,将所述一级缓存区域内缓存的对象转换为在所述二级缓存区域进行缓存包括:对所述一级缓存区域内的缓存对象依据访问量的多少进行排序;优先将所述一级缓存区域内访问量少的缓存对象转换为在所述二级缓存区域内进行缓存。
优选地,所述一级缓存区域采用链状哈希映射LinkHashMap容器对所述一级缓存区域内的缓存对象进行缓存。
优选地,所述二级缓存区域采用并行哈希映射ConcurrentHashMap容器对所述二级缓存区域内的缓存对象进行缓存。
根据本发明的另一方面,提供了一种终端内存处理装置,包括:划分模块,用于将所述终端内存划分为多个缓存区域;分级模块,用于对所述多个缓存区域进行分级;缓存模块,用于依据分级后的所述缓存区域对所述终端内存中的缓存对象进行分级缓存处理。
优选地,所述划分模块包括:划分单元,用于将所述终端内存划分为一级缓存区域和二级缓存区域,其中,所述一级缓存区域内的缓存对象禁止被垃圾回收器回收,所述二级缓存区域内的缓存对象在满足预定存储容量时被所述垃圾回收器回收。
优选地,所述缓存模块包括:判断单元,用于判断所述一级缓存区域内缓存的对象是否超过预定容量;转换单元,用于在所述判断单元的判断结果为是的情况下,将所述一级缓存区域内缓存的缓存对象转换为在所述二级缓存区域进行缓存。
优选地,所述转换单元包括:排序子单元,用于对所述一级缓存区域内的缓存对象依据访问量的多少进行排序;转换子单元,用于优先将所述一级缓存区域内访问量少的缓存对象转换为在所述二级缓存区域内进行缓存。
根据本发明的再一方面,提供了一种终端,包括上述任一项所述的装置。
通过本发明,采用将所述终端内存划分为多个缓存区域;对所述多个缓存区域进行分级;依据分级后的所述缓存区域对所述终端内存中的缓存对象进行分级缓存处理解决了相关技术中存在终端内存相对紧张同时又对终端应用的用户体验要求很高的矛盾的问题,进而达到了实现对内存的高速缓存,有效解决内存紧张与应用体验相矛盾,提高用户体验的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的终端内存处理方法的流程图;
图2是根据本发明实施例的终端内存处理装置的结构框图;
图3是根据本发明实施例的终端内存处理装置中划分模块22的结构框图;
图4是根据本发明实施例的终端内存处理装置中缓存模块26的结构框图;
图5是根据本发明实施例的终端内存处理装置中缓存模块26中转换单元44的结构框图;
图6是根据本发明实施例的终端的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在本实施例中提供了一种终端内存处理方法,图1是根据本发明实施例的终端内存处理方法的流程图,如图1所示,该流程包括如下步骤:
步骤S102,将终端内存划分为多个缓存区域;
步骤S104,对该多个缓存区域进行分级;
步骤S106,依据分级后的缓存区域对终端内存中的缓存对象进行分级缓存处理。
通过上述步骤,对终端内存中的缓存区域进行分级,依据分级后的缓存区域对缓存对象进行分级缓存,相对于相关技术中仅采用完全固定缓存或是完全不固定软引用的缓存来说,采用对缓存区域进行有区分地缓存对象,不仅解决了相关技术中浪费内存或是严重影响用户体验的问题,即存在终端内存相对紧张同时又对终端应用的用户体验要求很高的矛盾的问题,进而达到了实现对内存的高速缓存,有效解决内存紧张与应用体验相矛盾,提高用户体验的效果。
优选地,将终端内存划分为多个缓存区域时,可以依据具体的需要将终端内存划分为对应数目的缓存区域,依据划分后的缓存区域分别进行对应处理,例如,可以将终端内存划分为一级缓存区域和二级缓存区域,其中,一级缓存区域内的缓存对象禁止被垃圾回收器回收,二级缓存区域内的缓存对象在满足预定存储容量时被垃圾回收器回收。即将终端内存划分为可以对缓存对象实行不同缓存处理的缓存区域,即实现对缓存对象实行不同的缓存处理。
依据分级后的缓存区域对终端内存中的缓存对象进行分级缓存处理时,也可以采用多种方式,例如,可以先给一级缓存区域设置一个缓存容量(即在该一级缓存区域内不能缓存超过该容量),之后,判断一级缓存区域内缓存的对象是否超过预定容量;在判断结果为是的情况下,将一级缓存区域内缓存的缓存对象转换为在二级缓存区域进行缓存。而在将一级缓存区域内缓存的对象转换为在二级缓存区域进行缓存时,也可以依据具体的考虑因素,对一级缓存区域中的缓存对象实行有选择地转换为在该二级缓存区域中进行缓存,例如,该考虑因素可以为缓存对象的重要程度,缓存对象的访问量等,比如,可以对一级缓存区域内的缓存对象依据访问量的多少进行排序;优先将一级缓存区域内访问量少的缓存对象转换为在二级缓存区域内进行缓存。
需要说明的是,上述一级缓存区域以及二级缓存区域可以采用多种缓存容器对缓存对象进行存储,例如,由于链状哈希映射LinkHashMap容器可以对缓存对象具有一定的排序功能,因此,由于一级缓存区域可以采用链状哈希映射LinkHashMap容器对一级缓存区域内的缓存对象进行缓存。由于并行哈希映射ConcurrentHashMap容器可以对缓存对象进行高效的并行处理,因此,该二级缓存区域可以采用并行哈希映射ConcurrentHashMap容器对二级缓存区域内的缓存对象进行缓存。
在本实施例中还提供了一种终端内存处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图2是根据本发明实施例的终端内存处理装置的结构框图,如图2所示,该装置包括划分模块22、分级模块24和缓存模块26,下面对装置进行说明。
划分模块22,用于将终端内存划分为多个缓存区域;分级模块24,连接至上述划分模块22,用于对多个缓存区域进行分级;缓存模块26,连接至上述分级模块24,用于依据分级后的缓存区域对终端内存中的缓存对象进行分级缓存处理。
图3是根据本发明实施例的终端内存处理装置中划分模块22的结构框图,如图3所示,该划分模块22包括划分单元32,下面对该划分单元32进行说明。
划分单元32,用于将终端内存划分为一级缓存区域和二级缓存区域,其中,一级缓存区域内的缓存对象禁止被垃圾回收器回收,二级缓存区域内的缓存对象在满足预定存储容量时被垃圾回收器回收。
图4是根据本发明实施例的终端内存处理装置中缓存模块26的结构框图,如图4所示,该缓存模块26包括判断单元42和转换单元44,下面对该缓存模块26进行说明。
判断单元42,用于判断一级缓存区域内缓存的对象是否超过预定容量;转换单元44,连接至上述判断单元42,用于在判断单元的判断结果为是的情况下,将一级缓存区域内缓存的缓存对象转换为在二级缓存区域进行缓存。
图5是根据本发明实施例的终端内存处理装置中缓存模块26中转换单元44的结构框图,如图5所示,该转换单元44包括:排序子单元52和转换子单元54,下面对该转换单元44进行说明。
排序子单元52,用于对一级缓存区域内的缓存对象依据访问量的多少进行排序;转换子单元54,连接至上述排序子单元52,用于优先将一级缓存区域内访问量少的缓存对象转换为在二级缓存区域内进行缓存。
在本实施例中,还提供了一种终端,图6是根据本发明实施例的终端的结构框图,如图6所示,该终端60包括上述任一项的终端内存处理装置62。
像访问磁盘文件、访问网络资源、查询数据库等操作都是影响应用程序执行性能的重要因素,如果能重新获取那些尚未被回收的Java对象的引用,必将减少不必要的访问,大大提高程序的运行速度。因此,在本实施例中基于终端(例如,手机)内存相对紧张同时又对手机应用的用户体验要求很高的矛盾,即在面对手机终端内存一定的情况下,对手机应用的用户响应性与手机应用的健壮性都提出了很高的要求。在本实施例中,在内存一定的前提下做到充分利用现有内存基础上构建应用的二级缓存并且做到有效避免内存缓存OutOfMemoryException发生。例如,对图片缓存采用该缓存策略后就可以达到很高的用户体验。
下面对本发明实施例的双缓存方案进行描述,便于以下叙述,以下以终端内存消耗比较突出的图片为例进行说明,该方案主要包括以下几点:1、使用JAVA的强引用构建应用的一级缓存;2、JAVA软引用构建二级缓存;3、借助JAVA提供的LinkHashMap类实现近期最少使用(Least Recently Used,简称为LRU)算法和一级缓存容器;4、在一级与二级缓存之间动态双向转换;5、根据手机终端内存大小动态修改一级缓存大小;6、使用JAVA提供的ConcurrentHashMap实现二级缓存容器;7、提供压缩后缓存策略。
通过本发明实施例,根据JAVA自有垃圾回收器的特性对需要缓存的对象使用强引用构建的一级缓存,采用软引用构建二级缓存,再根据LRU算法动态转换一、二级缓存中的对象,这样双管齐下,不仅增强了页面浏览的流畅从而大大增强用户体验,并且有效的降低了OutOfMemoryException异常发生的机率,从而使我们的应用在如今竞争相当激励移动互联网应用中能够脱颖而出,得到用户的青睐最终赢得市场。
下面对本发明的优选实施方式进行说明。
在本优选实施方式中,首先,根据手机终端内存的大小创建一个合适大小的强引用缓存区域,在强引用缓存区域所存放的对象在垃圾回收时不会主动被回收,即只要不主动释放就会贯穿应用的整个生命周期,所以这里的引用缓存就构成上述所说的一级缓存,在一级缓存里存放应用中经常使用到的对象(例如,图片数据)。由于一级缓存的支撑,用户在使用时就不会感觉到应用页面的滞后。但由于物理内存大小限制一级缓存容量是有限的,所以引入采用软引用构建的不限大小的二级缓存区域,软引用区域主要用来存放一级缓存区域根据LRU算法淘汰下来的图片资源,随着应用的运行,从一级缓存淘汰时二级缓存的图片资源将会越来越多,当内存大到超出物理内存总和后就会发生OutOfMemoryException异常,这样就违背了应用的健壮性。因此,在本优选实施方式中构建的二级缓存采用的JAVA的软引用,根据软引用的特性在JAVA垃圾回收器发生的时候会动态决定是否回收软件用所指对象占用的内存,当内存到达物理内存极限的时候就会强行回收软引用对象所占用的内存,如果尚有足够支撑应用运行内存,垃圾回收器就会忽略软引用对象,由于软引用这个独特性质,所以可以有效避免常见的OutOfMemoryException异常的发生,这样就大大提高了应用的健壮性。在构建一级缓存的容器时,主要采用了JAVA提供的LinkHashMap类,之所以采用这样的容器是因为在应用不断使用的时候会不断将后续的图片资源根据LRU算法转移至二级缓存,LinkHashMap该类本身存在一个特性就是可以动态设置属性根据访问高低将容器中的对象进行排序,所以借助这个类只需要实现一级缓存向二级缓存移动的便捷操作,将实现LRU算法难度大大降低。在实现二级缓存时我们采用了JAVA中提供的ConcurrentHashMap类,由于现在的一般应用都是多线程访问,所以这就要求考虑容器的同步安全问题,当然JAVA中多线程安全的容器还有很多,如Vector、HashTable等,但是这些类实现多线程安装用的整个方法加上内部锁实现,而ConcurrentHashMap采用的是分离锁,所以使用ConcurrentHashMap能够达到更好的吞吐量。在最后对于缓存的对象提供了压缩后缓存策略,这一点可以根据后续的测试充分考虑响应与性能兼顾的前提下决定是否采用压缩后缓存。
需要说明的是,上述所指的强引用(StrongReference)是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。因此,在本优选实施例中,采用强引用来实现一级缓存,但是当应用从网络中获取网络图片数据时,用户完全有可能做一些重复性的操作去查看相同的图片信息。
另外,如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。使用软引用(SoftReference)实现二级缓存是非常有必要的一件事情。在处理大量图片的时候,使用软引用技术可以来防止内存溢出。在Android开发中,为了防止内存溢出,在处理一些占用一些内存大而且声明周期较长的对象的时候,可以尽量使用软引用技术。使用软引用以后,在OutOfMemory异常发生之前,这些缓存的图片资源的内存空间是可以被释放掉的,从而避免内存达到上限,避免内存溢出的发生。
虽然软引用在内存空间足够的时候使用起来比较方便,而在内存空间不足的时候就不能使用软引用,因为随时都可能被垃圾回收器回收。因此,在Android开发中可以使用LRU+软引用的方法来缓存图片设置两级缓存,第一级用LinkedHashMap<String,Bitmap>保留Bitmap的强引用,但是控制缓存的大小MAX_CAPACITY=10,当继续向该缓存中存数据的时候,将会把一级缓存中的最近最少使用的元素放入二级缓存ConcurrentHashMap<Sting,SoftReference<Bitmap>>,二级缓存中保留的Bitmap的软引用。
把图片保存到LRU集合中的时候,同时保存在一个软引用的集合之中,如果此元素被LRU算法删除,可能垃圾回收器还并没有回收,可以通过软引用的集合获取到此引用。
需要说明的是,LinkedHashMap继承了HashMap底层是通过Hash表+单向链表实现Hash算法,内部自己维护了一套元素访问顺序的列表。ConcurrentHashMap的并发读写速度很快,主要归功于其内部数据结构和独特的hash运算以及分离锁的机制。应用的性能很重要,为了提高数据的读写速度,方法之一就是采用缓存机制,作为核心基础设施,缓存必须具备以下几个方面的功能:1.快速定位数据;2.并发变更数据;3.数据的过期控制与异步写入;4.高并发的情况下缓存数据的一致性。ConcurrentHashMap类包含两个静态内部类HashEntry和Segment。HashEntry用来封装映射表的键/值对;Segment用来充当数据划分和锁的角色,每个Segment对象是整个散列映射表的若干个table。每个table是由若干个HashEntry对象链接起来的链表。一个ConcurrentHashMap实例中包含由若干个Segment对象组成的数组。
在Android中用到大量的默认图片,比如,应用中有默认的头像,默认游戏图标等等,这些图片很多地方会用到。如果每次都去读取图片,由于读取文件需要硬件操作,速度较慢,会导致性能降低。因此,可以考虑将图片缓存起来,需要的时候直接从内存中读取。但是由于图片占用内存空间比较大,缓存很多图片需要很多的内存,就可能比较容易发生OutOfMemoryException异常。这时,可以采用将图片压缩或者使用软引用的方法来避免这个问题的发生。下面将详细介绍这两种方法。
较大图片文件上传到服务器一般都需要压缩调整,以保证数据通信的效率是最主要的。首先图片的存在形式主要有三种,第一种是以文件形式即以二级制形式存在于硬盘上,第二种是以流的形式即以二进制形式存在于内存中,第三种则是以Bitmap形式。这三种的区别是文件形式和流形式对图片的体积大小并没有影响,也就是说,如果手机SD卡上的内存如果有100K,那么通过流的形式读到内存中,也一定是占100K的内存;当如果图片以Bitmap的形式存在时,其占用的内存会瞬间变大,假如500K文件形式的图片加载到内存,以Bitmap形式存在时,占用内存将近10M,当然这个增大的倍数并不是固定的。Bitmap是Android系统中的图像处理的最重要的类之一,用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,并可以指定格式保存图像文件。
以下简单介绍几种常见的图片压缩方式:
方式一,将图片保存到本地时进行压缩,即将图片从Bitmap形式变为File形式时进行压缩。
其特点是file形式的图片确实被压缩了,但是当重新读取压缩后的file为Bitmap时,它占用的内存并没有改变。该方法是压缩图片的质量,它不会减少图片的像素。也就是该方法会让图片重新构造,但是有可能像素的色深(即位深)和每个像素的透明度会变化,JPEG onlysupports opaque(不透明),也就是说以JPEG格式压缩后,原来图片中透明的元素将消失,所以这种格式可能造成失真。既然它是改变了图片的显示质量,达到了对File形式图片的图片进行压缩,图片的像素没有改变的话,那重新读取经过压缩的file为Bitmap时,它占用的内存并不会少。
方式二,将图片从本地读到内存时,进行压缩,即图片从File形式变为Bitmap形式。
其特点是通过设置采样率,减少图片的像素,减少Bitmap的像素,从而减少了它所占用的内存。
以上两种方法总结一句话就是要想压缩内存中的Bitmap,就要减少它的像素;要想压缩为File,就要降低它的质量。
通过以上对于Java软引用类型的了解,可以知道使用软引用来构建缓存是比较合适的。虽然软引用能够延长数据对象的生命周期,但是对于移动设备来说,内存资源相对来说比较紧缺,仅使用软引用未必能达到最佳的缓存效果。通常会使用一些组合方式来进行数据缓存,最常用的是强引用、软引用加本地缓存的方式。
采用上述实施例及优选实施方式的双缓存处理,通过创建两个缓存区域:强引用缓存区域和软引用缓存区域。在强引用缓存区中保存有限的图片对象,根据LRU策略把一些最不常用的图片对象移到软引用缓存区,当缓存区域中都没有图片对象时从网络加载图片。完成后把图片数据保存到SDCard中,并根据LRU策略进行管理SDCard中保存的图片文件。
综上所述,采用双缓存,可以实现内存敏感的高速缓存,防止内存泄露,增强程序的健壮性。不仅降低了对内存的依赖,实现内存的高速缓存,而且能够有效防止内存泄露,低性能的系统中也能畅快运行(用户体验),数据加载速度变快,大大提高了应用的稳定性(用户体验)。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种终端内存处理方法,其特征在于,包括:
将所述终端内存划分为多个缓存区域;
对所述多个缓存区域进行分级;
依据分级后的所述缓存区域对所述终端内存中的缓存对象进行分级缓存处理;
其中,将所述终端内存划分为所述多个缓存区域包括:
将所述终端内存划分为一级缓存区域和二级缓存区域,其中,所述一级缓存区域内的缓存对象禁止被垃圾回收器回收,所述二级缓存区域内的缓存对象在满足预定存储容量时被所述垃圾回收器回收;
其中,依据分级后的所述缓存区域对所述终端内存中的缓存对象进行分级缓存处理包括:
判断所述一级缓存区域内缓存的对象是否超过预定容量;
在判断结果为是的情况下,将所述一级缓存区域内缓存的缓存对象转换为在所述二级缓存区域进行缓存。
2.根据权利要求1所述的方法,其特征在于,将所述一级缓存区域内缓存的对象转换为在所述二级缓存区域进行缓存包括:
对所述一级缓存区域内的缓存对象依据访问量的多少进行排序;
优先将所述一级缓存区域内访问量少的缓存对象转换为在所述二级缓存区域内进行缓存。
3.根据权利要求1至2中任一项所述的方法,其特征在于,所述一级缓存区域采用链状哈希映射LinkHashMap容器对所述一级缓存区域内的缓存对象进行缓存。
4.根据权利要求1至2中任一项所述的方法,其特征在于,所述二级缓存区域采用并行哈希映射ConcurrentHashMap容器对所述二级缓存区域内的缓存对象进行缓存。
5.一种终端内存处理装置,其特征在于,包括:
划分模块,用于将所述终端内存划分为多个缓存区域;
分级模块,用于对所述多个缓存区域进行分级;
缓存模块,用于依据分级后的所述缓存区域对所述终端内存中的缓存对象进行分级缓存处理;
其中,所述划分模块包括:
划分单元,用于将所述终端内存划分为一级缓存区域和二级缓存区域,其中,所述一级缓存区域内的缓存对象禁止被垃圾回收器回收,所述二级缓存区域内的缓存对象在满足预定存储容量时被所述垃圾回收器回收;
其中,所述缓存模块包括:
判断单元,用于判断所述一级缓存区域内缓存的对象是否超过预定容量;
转换单元,用于在所述判断单元的判断结果为是的情况下,将所述一级缓存区域内缓存的缓存对象转换为在所述二级缓存区域进行缓存。
6.根据权利要求5所述的装置,其特征在于,所述转换单元包括:
排序子单元,用于对所述一级缓存区域内的缓存对象依据访问量的多少进行排序;
转换子单元,用于优先将所述一级缓存区域内访问量少的缓存对象转换为在所述二级缓存区域内进行缓存。
7.一种终端,其特征在于,包括权利要求5至6中任一项所述的装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310669799.9A CN104699626B (zh) | 2013-12-10 | 2013-12-10 | 终端内存处理方法、装置及终端 |
PCT/CN2014/079532 WO2015085732A1 (zh) | 2013-12-10 | 2014-06-09 | 终端内存处理方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310669799.9A CN104699626B (zh) | 2013-12-10 | 2013-12-10 | 终端内存处理方法、装置及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104699626A CN104699626A (zh) | 2015-06-10 |
CN104699626B true CN104699626B (zh) | 2019-02-19 |
Family
ID=53346776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310669799.9A Active CN104699626B (zh) | 2013-12-10 | 2013-12-10 | 终端内存处理方法、装置及终端 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104699626B (zh) |
WO (1) | WO2015085732A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108132757B (zh) * | 2016-12-01 | 2021-10-19 | 阿里巴巴集团控股有限公司 | 数据的存储方法、装置及电子设备 |
CN106649130A (zh) * | 2016-12-28 | 2017-05-10 | 乐蜜科技有限公司 | 内存空间回收方法、装置和电子设备 |
CN106802955B (zh) * | 2017-01-19 | 2020-06-16 | 浪潮通用软件有限公司 | 一种图片数据缓存方法 |
TWI653533B (zh) * | 2017-03-07 | 2019-03-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
CN109992393A (zh) | 2017-12-29 | 2019-07-09 | 广东欧珀移动通信有限公司 | 应用处理方法和装置、电子设备、计算机可读存储介质 |
CN108551490B (zh) * | 2018-05-14 | 2021-06-18 | 西京学院 | 一种工业流数据编码解码系统及方法 |
CN109376125A (zh) * | 2018-09-25 | 2019-02-22 | 郑州云海信息技术有限公司 | 一种元数据存储方法、装置、设备及计算机可读存储介质 |
CN109947367B (zh) * | 2019-03-15 | 2024-01-09 | 维沃移动通信有限公司 | 一种文件的处理方法及终端 |
CN110442404B (zh) * | 2019-08-13 | 2022-07-05 | 武汉斗鱼鱼乐网络科技有限公司 | 一种对象释放方法、装置、设备和存储介质 |
US11474941B2 (en) * | 2020-03-09 | 2022-10-18 | International Business Machines Corporation | Using multi-tiered cache to satisfy input/output requests |
CN111813347B (zh) * | 2020-07-24 | 2022-06-07 | 济南浪潮数据技术有限公司 | 垃圾回收空间管理方法、装置及计算机可读存储介质 |
CN112783656B (zh) * | 2021-01-29 | 2024-04-30 | 杭州网易智企科技有限公司 | 内存管理方法、介质、装置和计算设备 |
CN116243850B (zh) * | 2021-06-08 | 2024-05-28 | 荣耀终端有限公司 | 一种存储器管理方法及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852318A (zh) * | 2006-04-19 | 2006-10-25 | 华中科技大学 | 适用于对象网络存储的分布式多级缓存系统 |
CN101770412A (zh) * | 2010-01-22 | 2010-07-07 | 华中科技大学 | 一种连续数据缓存系统及其数据缓存方法 |
CN101908022A (zh) * | 2010-08-13 | 2010-12-08 | 优视科技有限公司 | 一种用于移动通讯设备终端的内存管理方法及其装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI587136B (zh) * | 2011-05-06 | 2017-06-11 | 創惟科技股份有限公司 | 快閃記憶體系統及其快閃記憶體無效資料頁資訊之管理方法與回收方法 |
-
2013
- 2013-12-10 CN CN201310669799.9A patent/CN104699626B/zh active Active
-
2014
- 2014-06-09 WO PCT/CN2014/079532 patent/WO2015085732A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852318A (zh) * | 2006-04-19 | 2006-10-25 | 华中科技大学 | 适用于对象网络存储的分布式多级缓存系统 |
CN101770412A (zh) * | 2010-01-22 | 2010-07-07 | 华中科技大学 | 一种连续数据缓存系统及其数据缓存方法 |
CN101908022A (zh) * | 2010-08-13 | 2010-12-08 | 优视科技有限公司 | 一种用于移动通讯设备终端的内存管理方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104699626A (zh) | 2015-06-10 |
WO2015085732A1 (zh) | 2015-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104699626B (zh) | 终端内存处理方法、装置及终端 | |
US10990540B2 (en) | Memory management method and apparatus | |
CN103544207B (zh) | 一种图片加载显示的方法与系统 | |
US8941663B2 (en) | Method and device for rendering user interface font | |
CN106095568B (zh) | 内存管理装置、移动终端及方法 | |
CN102651001A (zh) | 一种图片浏览的方法及装置 | |
CN108108089B (zh) | 一种图片加载方法及装置 | |
CN104331428A (zh) | 一种小文件和大文件的存储及访问方法 | |
CN104778222A (zh) | 基于usb存储设备的媒体库建立及更新方法 | |
CN110515920A (zh) | 一种基于Hadoop的海量小文件存取方法和系统 | |
CN104103087A (zh) | 一种具有文字介绍功能的图片显示和管理的方法和系统 | |
CN111931095A (zh) | 一种Android系统的图片加载方法 | |
CN106649146A (zh) | 一种内存释放方法及装置 | |
CN113392863A (zh) | 一种机器学习训练数据集的获取方法、获取装置及终端 | |
CN105550246A (zh) | Android平台下加载网络图片的系统及方法 | |
US9754391B2 (en) | Webpage display method and apparatus | |
CN103631777A (zh) | 浏览图像的方法和系统 | |
CN102789458A (zh) | 一种影像文件处理方法及系统 | |
CN104778049A (zh) | 基于Android系统的用于人机交互APP应用的实现方法及交互系统 | |
CN103631616A (zh) | 图片快速加载及缓存方法与系统 | |
CN103208128A (zh) | 显示图片的方法及装置 | |
CN106484755A (zh) | 异步快速加载视频缩略图的方法 | |
US20090225767A1 (en) | Network packet capturing method | |
CN105447016B (zh) | 一种组件的快速搜索及重用的办法 | |
CN109218799B (zh) | 安卓电视快速切换高清图的方法、存储介质、设备及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |