一种安卓应用的内存泄露检测方法及装置制造方法及图纸

技术编号:16365433 阅读:23 留言:0更新日期:2017-10-10 21:26
本发明专利技术公开了一种安卓应用的内存泄露检测方法及装置,该内存泄露检测方法包括:建立一弱引用监听器,弱引用监听器监听当前运行的应用程序的Activity组件;当Activity组件销毁时,检测Activity组件是否存在引用,若存在,则触发内存回收机制,之后检测Activity组件是否存在弱引用。实施本发明专利技术的有益效果是,通过随意设置监控对象,方便在应用程序开发中对内存泄露进行监控,该方法及装置使用简单灵活,不仅提高了程序的健壮性,还提高了工程师的开发效率。

Memory leak detection method and device for Android application

The invention discloses a memory leak detection method and apparatus for Android applications, the memory leak detection method includes: the establishment of a weak reference monitor, weak Activity component applistener monitor the current operation; when the Activity component destroyed, testing whether the Activity component reference exists, if it exists, the trigger memory recovery mechanism. After the detection of Activity components the existence of weak references. The beneficial effect of the implementation of the present invention is, by arbitrarily set up monitoring objects, convenient to monitor memory leaks in application development, the method and the device used is simple and flexible, not only improves the robustness of the program, but also improves the efficiency of development engineer.

【技术实现步骤摘要】
一种安卓应用的内存泄露检测方法及装置
本专利技术涉及安卓系统内存管理
,尤其涉及一种安卓应用的内存泄露检测方法及装置。
技术介绍
在基于安卓(Android)系统的代码编写中,根据开发者的工作经验,一般对容易产生内存泄漏的代码进行处理。目前在Android应用程序开发中,对象使用后仍持有该对象的引用,使得之前分配的内存不能回收,造成了内存泄漏。这就需要开发人员对容易产生内存泄漏的代码进行额外的控制,已防止内存泄漏的产生。如context(上下文环境)的重要程度不言而喻,context有自己的生命周期,如果使用不当,一直持有该context的引用,从而导致context的存在时间超过了本身的生命周期,就会导致内存泄漏,并且如果缺少经验,开发过程中并不容易明显发现,明显的例子是使用静态属性View,或是使用Handler延迟发送消息等,这都需要开发者在开发的过程中做好预防措施,但是难免也会有疏漏。应用程序开发完成后,使用MAT(Eclipse的一个插件,内存分析工具)等内存分析工具对程序的内存的使用进行分析,但是上手较为麻烦,查找起来也比较消耗时间。
技术实现思路
本专利技术的目的在于提供一种安卓应用的内存泄露检测方法及装置,解决现有技术中出现内存泄露会占用内存越来越多,以至于导致程序崩溃的问题。本专利技术的技术方案实现如下:本专利技术的一个目的在于提供一种安卓应用的内存泄露检测方法,包括:建立一弱引用监听器,所述弱引用监听器监听当前运行的应用程序的Activity组件;当所述Activity组件销毁时,检测所述Activity组件是否存在引用,若存在,则触发内存回收机制,之后检测所述Activity组件是否存在弱引用。在本专利技术所述的内存泄露检测方法中,所述检测所述Activity组件是否存在弱引用的步骤包括:检测所述Activity组件是否存在弱引用;若存在,则所述Activity组件发生内存泄露;若不存在,则内存回收正常。在本专利技术所述的内存泄露检测方法中,所述触发内存回收机制的步骤包括:调用Runtime.getRuntime().gc()方法触发内存垃圾回收。在本专利技术所述的内存泄露检测方法中,所述内存泄露检测方法还包括:当所述Activity组件发生内存泄露时,在通知栏中显示所述Activity组件的引用的相关信息。在本专利技术所述的内存泄露检测方法中,所述内存泄露检测方法还包括:建立多个弱引用监听器,所述多个弱引用监听器监听当前运行的多个应用程序的Activity组件。另一方面,提供一种安卓应用的内存泄露检测装置,包括:监听器建立模块,用于建立一弱引用监听器,所述弱引用监听器监听当前运行的应用程序的Activity组件;引用检测模块,用于当所述Activity组件销毁时,检测所述Activity组件是否存在引用,若存在,则触发内存回收机制,之后检测所述Activity组件是否存在弱引用。在本专利技术所述的内存泄露检测装置中,所述引用检测模块包括:弱引用检测子模块,用于检测所述Activity组件是否存在弱引用;若存在,则所述Activity组件发生内存泄露;若不存在,则内存回收正常。在本专利技术所述的内存泄露检测装置中,所述引用检测模块包括:内存回收子模块,用于调用Runtime.getRuntime().gc()方法触发内存垃圾回收。在本专利技术所述的内存泄露检测装置中,所述内存泄露检测装置还包括:引用显示模块,用于当所述Activity组件发生内存泄露时,在通知栏中显示所述Activity组件的引用的相关信息。在本专利技术所述的内存泄露检测装置中,所述监听器建立模块还用于:建立多个弱引用监听器,所述多个弱引用监听器监听当前运行的多个应用程序的Activity组件。因此,本专利技术的有益效果是,通过随意设置监控对象,方便在应用程序开发中对内存泄露进行监控,该方法及装置使用简单灵活,不仅提高了程序的健壮性,还提高了工程师的开发效率。附图说明下面将结合附图及实施例对本专利技术作进一步说明,附图中:图1为本专利技术提供的一种安卓应用的内存泄露检测方法流程图;图2为本专利技术提供的一种安卓应用的内存泄露检测装置框图。具体实施方式为了对本专利技术的技术特征、目的和效果有更加清楚的理解,以下将对照附图详细说明本专利技术的具体实施方式。应当理解,以下说明仅为本专利技术实施例的具体阐述,不应以此限制本专利技术的保护范围。本专利技术提供一种安卓应用的内存泄露检测方法,其目的在于,针对现有技术中出现内存泄露会占用内存越来越多,以至于导致程序崩溃的问题,通过Android生命周期及弱引用的使用,在应用程序开发中对内存泄露进行监控,该方法及装置使用简单灵活,不仅提高了程序的健壮性,还提高了工程师的开发效率。其中,内存泄露是指应用对象申请了一块内存,使用完成后没有释放掉。如果程序出现了内存泄露,长时间运行后,会占用内存越来越多,可能会导致程序崩溃。本专利技术的安卓应用开始是基于Eclipse开发,Eclipse为Android应用程序开发工具。同时Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。参见图1,图1为本专利技术提供的一种安卓应用的内存泄露检测方法流程图,该方法包括以下步骤:S1、建立一弱引用监听器,所述弱引用监听器监听当前运行的应用程序的Activity组件;当程序运行的时候,该弱引用监听器会自动监听对应的应用程序。该应用程序可以随意设置,即可以随意监控想监控的对象。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。弱引用不同于一般的引用在于,弱引用拥有短的生命周期,在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。即弱引用就是不保证不被垃圾回收器回收的对象,它拥有比较短暂的生命周期,在垃圾回收器扫描它所管辖的内存区域过程中,一旦发现了只具有弱引用的对象,就会回收它的内存,不过一般情况下,垃圾回收器的线程优先级很低,也就不会很快发现那些只有弱引用的对象。Activity为应用程序用于显示在屏幕上的组件。通常的,Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,ContentProvider内容提供者,BroadcastReceiver广播接收器)之一。Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过setContentView(View)来显示指定控件。在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。Activity拥有四种基本状态:1.Active/Running一个新Activity启动入栈后,它显示在屏幕最前端,处理是处于栈的最顶端(Activity栈顶),此时它处于可见并可和用户交互的激活状态,叫做活动状态或者运行状态(activeorrunning)。2.Paused当Activi本文档来自技高网...
一种安卓应用的内存泄露检测方法及装置

【技术保护点】
一种安卓应用的内存泄露检测方法,其特征在于,包括:建立一弱引用监听器,所述弱引用监听器监听当前运行的应用程序的Activity组件;当所述Activity组件销毁时,检测所述Activity组件是否存在引用,若存在,则触发内存回收机制,之后检测所述Activity组件是否存在弱引用。

【技术特征摘要】
1.一种安卓应用的内存泄露检测方法,其特征在于,包括:建立一弱引用监听器,所述弱引用监听器监听当前运行的应用程序的Activity组件;当所述Activity组件销毁时,检测所述Activity组件是否存在引用,若存在,则触发内存回收机制,之后检测所述Activity组件是否存在弱引用。2.根据权利要求1所述的内存泄露检测方法,其特征在于,所述检测所述Activity组件是否存在弱引用的步骤包括:检测所述Activity组件是否存在弱引用;若存在,则所述Activity组件发生内存泄露;若不存在,则内存回收正常。3.根据权利要求1所述的内存泄露检测方法,其特征在于,所述触发内存回收机制的步骤包括:调用Runtime.getRuntime().gc()方法触发内存垃圾回收。4.根据权利要求2所述的内存泄露检测方法,其特征在于,所述内存泄露检测方法还包括:当所述Activity组件发生内存泄露时,在通知栏中显示所述Activity组件的引用的相关信息。5.根据权利要求2所述的内存泄露检测方法,其特征在于,所述内存泄露检测方法还包括:建立多个弱引用监听器,所述多个弱引用监听器监听当前运行的多个应用程序的Activity组件。6.一种安卓应用的内存泄露检测...

【专利技术属性】
技术研发人员:张玉竹
申请(专利权)人:卓望数码技术深圳有限公司
类型:发明
国别省市:广东,44

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

1