Android 内存检测工具

        在之前的博文中介绍了Android 性能分析工具TraceView 及Systrace。本文介绍两个内存分析工具Heap 及MAT。在应用开发过程中,无论多小心都不可避免会出现内存使用上的问题导致内存泄露。通过一些调试工具来检测内存使用情况是很有必要的,相信本文介绍的两款工具能给大家带来帮助。

     一、Heap

    Android tools中的DDMS就带有一个很不错的内存监测工具Heap,通过使用eclipseADT插件可以很方便地用Heap监测应用进程使用内存情况,步骤如下:

1. adb 登陆到调试设备

2. 启动eclipse后,切换到DDMS透视图,并确认Devices视图、Heap视图都是打开的

3. 在Devices 视图中选中调试设备,并点击需要检测的进程,如图1中的com.hybroad.launcher

4. 点击选中Devices视图界面中最上方一排图标中的“Update Heap”图标

   启动后Heap 视图如下:

                                                                     图1: Heap视图

       通过Heap视图可以检测进程内存使用情况,看是否存在内存泄露。

    1. 点击“Cause GC”按钮相当于向虚拟机请求了一次gc操作;

    2. 应用程序执行过程中,如果存在内存使用变化,Heap视图会定时刷新,通过Total size可以反应出内存整体使用情况

    Heap 视图中有一个叫做data object,即数据对象,这个数据对象就是我们程序中存在的类的类型对象,通过检视data object的Total size,来查看我们的程序是否存在内存泄露。通常情况下,Total size会稳定在一个稳定的范围内,如果程序代码良好,不存在对象无法回收造成内存泄露,那Total size会在一个稳定的范围内。如果代码中存在没有释放的对象引用,则data object的Total size会不断地增加,每次GC都无法保证内存使用值回落。通过检测data object的Total size 可以很方便的检测代码是否存在内存泄露的可能性。

二、MAT(Memory Analyzer Tool)

      Heap只能检测代码是否存在内存泄露的可能性,但要找到具体哪里泄露还需要借助MAT。 MAT是一个Eclipse插件,可以通过官方下载,eclipse插件下载这里不做介绍。安装MAT插件以后,eclipse自动生成的.hprof文件可自动生成分析视图,如图2所示:

   

                                    图2:MAT使用

       如图2显示,启动MAT同样需要选择检测进程,点击Devices上的Dump HPROF file 可以生成.hprof 文件,MAT工具分析该文件得到右边视图。在右图饼型图中。有三块深色的颜色表示可能存在的内存泄露。点击Leak Suspects,可以看到存在三个bitmap使用隐患,其中两张图片分别占7.9M。点击Leak Suspects显示结果如下,可以从中找到使用对应bitmap的位置,如图3所示,给出了其中一处隐患的路径。

    

                         图3:存在隐患的路径列表

     MAT工具的使用,具体查看官网。



 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值