Android studio Android Monitor介绍一

一、Memory

这个模块包括4个功能,分别是Enabled,Initiate GC,Dump Heap JAVA,Start Allocation Tracking.。对应面板的上的4个按钮:111611_t3rW_1463920.png



1.Enabled

Memory的开关。如果选择关闭,则不对当前进程进行内存监测。

2.Initiate GC

手动调用GC,我们在抓内存前,一定要手动点击 Initiate GC按钮手动触发GC,这样抓到的内存使用情况就是不包括Unreachable对象的.

3.Dump Heap java

点击这个按钮后,就在你点击的时刻,获取hprof文件(hprof文件是我们使用MAT工具分析内存时使用的文件),但这里直接产生的文件MAT还不能直接使用,需用转换成标准的hprof文件。可以使用AndroidStudio转换或者用hprof-conv命令转化,具体不详细介绍,网上可以查到.

112804_lAml_1463920.png

112804_AaDz_1463920.png


此刻分析数据比较简单,需要详细分析那么就得使用MAT工具,android studio 1.5还没集成MAT,相信之后的版本会集成。之后的文章我会专门写一篇MAT的使用文章。虽然简单,但不是一点价值都没有。我们用一个案例来说明一下。

先看截图:

123220_PpyP_1463920.png

在A区域(当前是类视图,即使class list view,还有包视图)点击Retained Size(包括直接引用的和间接引用的内存)排名,点击byte[],在B区域即使A中选中类的对象,点击Shallow size 根据这些对被直接引用的大小排名。选一个,然后在C中展现,这个对象的引用链,看到是被bitmap_unselect引用,占用大小是57892,bitmap_unselect又是被zoomViewLeft引用Depth就是被引用的层次。我们就check一下ZoomView的代码。

类有300行,我们截图相关的代码:

125207_4Epm_1463920.png

125207_22cL_1463920.png

125207_6lCO_1463920.png

可以看到这个图片始终没有被回收,所以一直占用内存。同理看到这个类里面还有其他bitmap,虽然不造成严重问题,但是内存优化的地方,如果不会被使用就要及时释放。我们试着优化一下,经过分析,bitmap_unselect就使用一次,在canvas.drawBitmap()之后我们就释放这个bitmap,

canvas.drawBitmap(bitmap_unselect, centerX - bitmap_unselect.getWidth()/2,
      0 - bitmap_unselect.getHeight()/2, null);
bitmap_unselect.recycle();
bitmap_unselect = null;

再用同样的方法生成hrpof,在B,C区域发现已经找不到bitmap_unselect,说明这部分内存已经被释放掉。举这个例子不是说明可以替代MAT,相反是一种补充,MAT分析复杂,但精准。而这个简单,粗暴,但也奏效。在开发过程中可以配合使用这个轻量的工具。


4.Start Allocaton Tracking

开始分配追踪,第一次点击可以指定追踪内存的开始位置,第二次点击可以结束追踪的位置。这样我们截取了一段要分析的内存,等待几秒钟AndroidStudio会给我们打开一个Allocation视图.

115518_PPn4_1463920.png

115518_kDkT_1463920.png

主要分析了各个线程中的方法所占用内存的大小。就以分析UI线程为例。

115956_q8AG_1463920.png

依次点开所占用内存最大的方法,可以看到我们跟到了Choregrapher的doFrame,读过源码的同学知道,这个方法是绘制界面的开始,这个方法会调用view树的onlayout,onDraw等。就不往下点开了。同理我们app中要是有其他线程,也可以照此分析,找到占用内存最大的方法。具体案例参考此文:http://blog.csdn.net/editor1994/article/details/50394560。





转载于:https://my.oschina.net/u/1463920/blog/611737

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值