Android studio Android Monitor介绍一
来源:互联网 发布:钢铁雄心4mac 编辑:程序博客网 时间:2024/06/05 08:49
一、Memory
这个模块包括4个功能,分别是Enabled,Initiate GC,Dump Heap JAVA,Start Allocation Tracking.。对应面板的上的4个按钮:
1.Enabled
Memory的开关。如果选择关闭,则不对当前进程进行内存监测。
2.Initiate GC
手动调用GC,我们在抓内存前,一定要手动点击 Initiate GC按钮手动触发GC,这样抓到的内存使用情况就是不包括Unreachable对象的.
3.Dump Heap java
点击这个按钮后,就在你点击的时刻,获取hprof文件(hprof文件是我们使用MAT工具分析内存时使用的文件),但这里直接产生的文件MAT还不能直接使用,需用转换成标准的hprof文件。可以使用AndroidStudio转换或者用hprof-conv命令转化,具体不详细介绍,网上可以查到.
此刻分析数据比较简单,需要详细分析那么就得使用MAT工具,android studio 1.5还没集成MAT,相信之后的版本会集成。之后的文章我会专门写一篇MAT的使用文章。虽然简单,但不是一点价值都没有。我们用一个案例来说明一下。
先看截图:
在A区域(当前是类视图,即使class list view,还有包视图)点击Retained Size(包括直接引用的和间接引用的内存)排名,点击byte[],在B区域即使A中选中类的对象,点击Shallow size 根据这些对被直接引用的大小排名。选一个,然后在C中展现,这个对象的引用链,看到是被bitmap_unselect引用,占用大小是57892,bitmap_unselect又是被zoomViewLeft引用Depth就是被引用的层次。我们就check一下ZoomView的代码。
类有300行,我们截图相关的代码:
可以看到这个图片始终没有被回收,所以一直占用内存。同理看到这个类里面还有其他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视图.
主要分析了各个线程中的方法所占用内存的大小。就以分析UI线程为例。
依次点开所占用内存最大的方法,可以看到我们跟到了Choregrapher的doFrame,读过源码的同学知道,这个方法是绘制界面的开始,这个方法会调用view树的onlayout,onDraw等。就不往下点开了。同理我们app中要是有其他线程,也可以照此分析,找到占用内存最大的方法。具体案例参考此文:http://blog.csdn.net/editor1994/article/details/50394560。
- Android studio Android Monitor介绍一
- Android studio Android Monitor介绍二
- Android studio Android Monitor介绍三
- Android studio Android Monitor介绍四
- Android studio Android Monitor
- Android Studio Memory Monitor
- Android Studio-Memory Monitor
- Android Studio(一)介绍
- 6.1、Android Studio的Android Monitor概览
- 6.5、Android Studio的Android Device Monitor
- 6.3、Android Studio的CPU Monitor
- 6.4、Android Studio的GPU Monitor
- Android Studio Monitor no debuggable applications
- Android Studio(一):介绍、安装、配置
- Android Studio中gradle介绍(一)
- Android实用小工具介绍之Monitor
- android monitor tool (1.0 功能介绍)
- android monitor
- 原来人工智能+医疗这么强大,移动医疗模式逐渐成为现实
- Django补充(4)
- mysql数据库开发常见问题及优化
- android ion 内存泄漏排查
- Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换
- Android studio Android Monitor介绍一
- 倒计时(距离抢购时间)
- SQL 视图
- 深入理解js闭包
- IO流
- 解决Unity中的mUnityPlayer.quit()方法导致一系列问题
- leetcode:169. Majority Element
- 手机号码/身份证号码中间几位的隐藏
- Angular2发布思路整理