Android 内存优化

来源:互联网 发布:网络诈骗50万100万 编辑:程序博客网 时间:2024/05/22 15:22

                                       Android 内存优化一(Mat)

Android发生内存泄漏最普遍的一种情况就是长期保持对context,一些static 静态变量的使用,Bitmap没有及时回收导致的OOM异常,特别是Activity的引用,使得Activity无法及时被销毁。
从而也使Activity中所有的成员变量也没办法及时的销毁。这里我主要是讲解下 Bitmap没有及时回收导致的OOM异常!

这里我用的是Eclipse 插件Mat,
下载地址:https://yunpan.cn/crFkevqrE4SCM (提取码:e0fd)由于这里我下载的插件并不是最新的,为此在安装插件的时候需要更新安装,避免出现安装错误!
Mat 插件工具 ,具体的操作步骤如下:

1、打开DDMS

      

                                                                                                       图 一

点击这个按钮之后需要等待一段时间,然后会生成一个.hprof文件,这个文件记录着我们应用程序内部的所有数据。由于我是直接使用Mat插件,因此无需使用命令来阅读该文件

                                                                                                    

 2、图一过渡到图二需要一定的时间。在这里我们更多需要知道的是 这两个选项卡 "Histogram"、"dominator_tree" 这里我着重的讲解下 "dominator_tree"选项卡的使用



                                                                                                            图 二


                                                                                                             图 三


3、点击图三 中的 Dominator Tree 选项卡进入相应的界面,从而能够一览无余的浏览图片的应用,为了更方便的观看当中的图片的一些数据

      我们可以打开 Window -> show View-> Ohter -> Inspector 窗口


                                                                                                                    图 四

Inspector 窗口 ,注意观察的是在这个窗口中我需要关注的焦点是 mBuffer 、mHeight、mWidth 三个字段,他们分别表示的是 mBuffer表示的是图片Bitmap图片的byte

字节,mHeight表示的是 图片的高,mWidth 表示的是图片的宽。有了这些信息之后我们就可以明确图片的一些相关属性信息!

二、在MAT中发现和图片相关的内存泄露的时候, 如果能知道是那一张图片,对分析问题会有很大的帮助. 有了这些相关信息,我们就可以更近一步的了解相关问题所在了!

        接下来就是具体实现哪一张图片内存泄露了!


    

1 0
原创粉丝点击