一种Android中内存回收方法及装置制造方法及图纸

技术编号:18006915 阅读:114 留言:0更新日期:2018-05-21 07:32
本发明专利技术提供一种Android中内存回收方法及装置,所述方法包括:S1,获取目标对象的大小和优先级,将所述目标对象的大小和优先级分别与相应的预设阈值进行比较;S2,根据比较结果对应的控制策略,使用系统垃圾回收器回收所述目标对象所占用的内存。本发明专利技术通过将所述目标对象的大小和优先级分别与相应的预设阈值进行比较,根据比较结果对应的控制策略,使用系统垃圾回收器回收所述目标对象所占用的内存,从而实现对不同大小和优先级的目标对象采用不同的控制策略回收内存,有效避免内存泄漏问题,提升了用户体验。

【技术实现步骤摘要】
一种Android中内存回收方法及装置
本专利技术属于内存优化领域,更具体地,涉及一种Android中内存回收方法及装置。
技术介绍
在Android开发过程中会使用到对象,因为Android是基于Java语言进行开发的,而Java是一门面向对象的语言。虽然Java虚拟机自带垃圾回收机制,但是依然无法避免内存泄漏问题。内存泄漏是指系统将堆内存分配给程序使用,由于某些原因导致程序在使用完内存后未及时释放或无法释放内存,导致已经分配的内存无法回收再利用,造成系统内存的浪费。随着程序的运行,系统可分配的内存越来越少,使得程序的运行速度减慢,最终可能导致系统由于没有足够内存而崩溃,造成严重影响。由于导致内存泄漏的原因有很多,对内存泄漏的监测及定位难度较大,从而很难解决内存泄漏的问题。
技术实现思路
为克服上述内存泄漏的问题或者至少部分地解决上述问题,本专利技术提供了一种Android中内存回收方法及装置。根据本专利技术的第一方面,提供一种Android中内存回收方法,包括:S1,获取目标对象的大小和优先级,将所述目标对象的大小和优先级分别与相应的预设阈值进行比较;S2,根据比较结果对应的控制策略,使用系统垃圾回收器回收所述目标对象所占用的内存。具体地,所述步骤S1中获取目标对象的大小的步骤具体包括:获取系统中的当前剩余内存容量;调用所述目标对象的构造方法对所述目标对象进行实例化,获取实例化的目标对象;获取所述目标对象实例化后的剩余内存容量;使用所述当前剩余内存容量减去所述目标对象实例化后的剩余内存容量,获取所述目标对象的大小。具体地,获取系统中的当前剩余内存容量和获取所述目标对象实例化后的剩余内存容量的步骤具体包括:使用运行时类Runtime中的静态方法getRuntime,获取运行时对象;调用所述运行时对象中的freeMemory方法,获取系统中的当前剩余内存容量和所述目标对象实例化后的剩余内存容量。具体地,获取所述目标对象实例化后的剩余内存容量的步骤之后还包括:将所述实例化的目标对象设置为空;使用系统垃圾回收器对所述实例化的目标对象所占用的内存进行回收处理。具体地,所述步骤S1中获取目标对象的优先级的步骤具体包括:定义一个基类,在所述基类中定义一个整型的优先级变量,给所述优先级变量赋值为预设常量;在所述基类中分别定义获取优先级函数和更改优先级函数,所述目标对象继承所述基类;调用所述更改优先级函数更改目标对象的优先级;调用所述获取优先级函数获取所述目标对象的优先级。具体地,所述步骤S2中的比较结果包括第一比较结果、第二比较结果和第三比较结果中的一种,以及第四比较结果、第五比较结果和第六比较结果中的一种,其中:所述第一比较结果为所述目标对象的优先级小于第一预设阈值;所述第二比较结果为所述目标对象的优先级大于或等于所述第一预设阈值,且小于或等于第二预设阈值;所述第三比较结果为所述目标对象的优先级大于所述第二预设阈值;所述第四比较结果为所述目标对象的大小大于第三预设阈值;所述第五比较结果为所述目标对象的大小小于或等于所述第三预设阈值,且大于或等于第四预设阈值;所述第六比较结果为所述目标对象的大小小于所述第四预设阈值。具体地,所述步骤S2具体包括:若所述优先级的比较结果为所述第一比较结果,且所述大小的比较结果为所述第四比较结果或第五比较结果,则将所述目标对象转换为弱引用对象;当系统中当前剩余内存容量小于第五预设阈值时,使用所述系统垃圾回收器优先回收所述弱引用对象所占用的内存。具体地,所述步骤S2具体包括:若所述优先级的比较结果为第一比较结果且所述大小的比较结果为第六比较结果,或者所述优先级的比较结果为第二比较结果且所述大小的比较结果为第四比较结果,或者所述优先级的比较结果为第二比较结果且所述大小的比较结果为第六比较结果,或者所述优先级的比较结果为第三比较结果且所述大小的比较结果为第五比较结果,则使用系统垃圾回收器每隔预设时长对所述目标对象进行监测;当监测到所述目标对象没有引用关系时,使用所述系统垃圾回收器回收所述目标对象所占用的内存。具体地,所述步骤S2具体包括:若所述优先级的比较结果为第二比较结果且所述大小的比较结果为第五比较结果,或者所述优先级的比较结果为第三比较结果且所述大小的比较结果为第四比较结果,或者所述优先级的比较结果为第三比较结果且所述大小的比较结果为第六比较结果,则使用预先创建的线程对所述目标对象中的数据进行检测;当检测到所述目标对象中的数据为空时,使用所述系统垃圾回收器回收所述目标对象所占用的内存。根据本专利技术的第二方面,提供一种Android中内存回收装置,包括:比较单元,用于获取目标对象的大小和优先级,将所述目标对象的大小和优先级分别与相应地预设阈值进行比较;回收单元,用于根据比较结果对应的控制策略,使用系统垃圾回收器回收所述目标对象所占用的内存。本专利技术提供一种Android中内存回收方法及装置,该方法通过将所述目标对象的大小和优先级分别与相应的预设阈值进行比较,根据比较结果对应的控制策略,使用系统垃圾回收器回收所述目标对象所占用的内存,从而实现对不同大小和优先级的目标对象采用不同的控制策略回收内存,有效避免内存泄漏问题,提升了用户体验。附图说明图1为本专利技术实施例提供的Android中内存回收方法整体流程示意图;图2为本专利技术实施例提供的Android中内存回收装置整体结构示意图;图3为本专利技术实施例提供的Android中内存回收设备整体结构示意图。具体实施方式下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。在本专利技术的一个实施例中提供一种Android中内存回收方法,图1为本专利技术实施例提供的Android中内存回收方法整体流程示意图,该方法包括:S1,获取目标对象的大小和优先级,将所述目标对象的大小和优先级分别与相应的预设阈值进行比较;S2,根据比较结果对应的控制策略,使用系统垃圾回收器回收所述目标对象所占用的内存。具体地,S1中,所述目标对象为一个Java对象。所述目标对象的大小为所述目标对象在内存中所占用内存的大小。所述目标对象的优先级为预先设定的,用于表示所述目标对象的重要程度,如将所述目标对象的优先级划分成为低、中和高三个档位,在代码层面使用1表示低档位,使用2表示中档位,使用3表示高档位,本实施例中所述优先级不仅限于所述三个档位。将所述目标对象的大小和优先级分别与相应的预设阈值进行比较,所述预设阈值可以为一个,也可以为多个。S2中,根据所述目标对象的大小和优先级的比较结果,获取所述比较结果对应的控制策略,所述控制策略为用于控制对所述目标对象所占用的内存进行回收的方法,不同的比较结果对应的控制策略不同。根据所述比较结果对应的控制策略,使用系统垃圾回收器回收所述目标对象所占用的内存。本实施例通过将所述目标对象的大小和优先级分别与相应的预设阈值进行比较,根据比较结果对应的控制策略,使用系统垃圾回收器回收所述目标对象所占用的内存,从而实现对不同大小和优先级的目标对象采用不同的控制策略回收内存,有效避免内存泄漏问题,提升了用户体验。在上述实施例的基础上,本实施例中所述步骤S1中获取目标对象的大小的步骤具体包括:获取系统中的当前剩余内存容本文档来自技高网...
一种Android中内存回收方法及装置

【技术保护点】
一种Android中内存回收方法,其特征在于,包括:S1,获取目标对象的大小和优先级,将所述目标对象的大小和优先级分别与相应的预设阈值进行比较;S2,根据比较结果对应的控制策略,使用系统垃圾回收器回收所述目标对象所占用的内存。

【技术特征摘要】
1.一种Android中内存回收方法,其特征在于,包括:S1,获取目标对象的大小和优先级,将所述目标对象的大小和优先级分别与相应的预设阈值进行比较;S2,根据比较结果对应的控制策略,使用系统垃圾回收器回收所述目标对象所占用的内存。2.根据权利要求1所述的方法,其特征在于,所述步骤S1中获取目标对象的大小的步骤具体包括:获取系统中的当前剩余内存容量;调用所述目标对象的构造方法对所述目标对象进行实例化,获取实例化的目标对象;获取所述目标对象实例化后的剩余内存容量;使用所述当前剩余内存容量减去所述目标对象实例化后的剩余内存容量,获取所述目标对象的大小。3.根据权利要求2所述的方法,其特征在于,获取系统中的当前剩余内存容量和获取所述目标对象实例化后的剩余内存容量的步骤具体包括:使用运行时类Runtime中的静态方法getRuntime,获取运行时对象;调用所述运行时对象中的freeMemory方法,获取系统中的当前剩余内存容量和所述目标对象实例化后的剩余内存容量。4.根据权利要求2所述的方法,其特征在于,获取所述目标对象实例化后的剩余内存容量的步骤之后还包括:将所述实例化的目标对象设置为空;使用系统垃圾回收器对所述实例化的目标对象所占用的内存进行回收处理。5.根据权利要求1所述的方法,其特征在于,所述步骤S1中获取目标对象的优先级的步骤具体包括:定义一个基类,在所述基类中定义一个整型的优先级变量,给所述优先级变量赋值为预设常量;在所述基类中分别定义获取优先级函数和更改优先级函数,所述目标对象继承所述基类;调用所述更改优先级函数更改目标对象的优先级;调用所述获取优先级函数获取所述目标对象的优先级。6.根据权利要求1-5任一所述的方法,其特征在于,所述步骤S2中的比较结果包括第一比较结果、第二比较结果和第三比较结果中的一种,以及第四比较结果、第五比较结果和第六比较结果中的一种,其中:所述第一比较结果为所述目标对象的优先级小于第一预设阈值;所述第二比较结果为所述目标对象的优先级大于或等于所述第一预设阈值,且小于或等于第二预...

【专利技术属性】
技术研发人员:张磊陈少杰张文明
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1