MAT检测内存泄漏
打开Profiler
image.png image.png image.png image.png此时不断切换Activity,往返进入,出来,然后点击生成文件
image.png此时生成的文件还不能直接在mat应用上打开,需要转换一下
打开sdk下面的sdk/platform-tools/文件夹下的hprof-conv工具
hprof-conv -z /Users/fangruijiao/Documents/内存Folder文件分析/memory-2.hprof newMory.hprof
然后打开mat应用
mat下载地址:http://www.eclipse.org/mat/downloads.php
image.png打开刚才的文件,此时点击HIstogram
image.png image.png看到MemroyShake有4个对象
image.png右击类,查看所有强引用
image.png我们看到有4个强引用,以及是ValueAnimator类中的callback强引用了,我们在代码中当结束Activity地 时候释放就可以了,操作完之后,再执行上面的操作,再看一下结果
image.png还是与4个,但是就是内存泄漏了吗?我们来看一下强引用
image.png此时已经没有强引用了,说明只是GC还没执行,还没有回收而已
如果有很多页面,那是否要每个页面都执行上述操作?这需要大量的操作,有没有更好的办法进行一次性检测?有,可以进行内存快照的比对,如何操作?
首次进入主页面时dump一次内存快照,然后不断进出各个页面,再次返回到主页面时又dump一次内存快照,然后比对这两次的hprof文件。
网友评论