使用Android Studio快速查找内存泄漏

1,什么是内存泄漏?
1)内存泄漏和内存溢出
2)垃圾内存

2,怎么回收垃圾内存
1)C语言手动分配和回收
2)java 设计了GC垃圾回收机制

3,GC判断垃圾内存的策略是什么
1)内存泄漏是一种主管的人为失误造成的
2)java的GC回收机制:莫对象不再有任何的引用的时候才会进行回收
提问:反过来如果莫对象被别的对象引用了就不能被GC回收吗?
答:否 无法往上追溯到GCroot 引用点的
软引用,虚引用,弱引用

可以作为GC root 引用点的是
javastack中的引用的对象
方法区中静态引用指向的对象

Memory Analyzer网盘链接

链接:https://pan.baidu.com/s/1c-u8sn6nhBCRCy3sStcB6Q
提取码:gsb0

1,打开Android Studio 快速查看内存泄漏

adb shell dumpsys meminfo com.well10.ui -d ( 为包名)

当前泄漏 149 数字越大泄漏越多 

2,在Terminal运行

adb shell monkey -p com.well10.ui -v 1000000

3,在右上角点击Profile图标

4,勾选正在运行的包名

5,点击MEMORY

6,先点击删除图标在点击下载图标

7,勾选Arrange by Package 快速查找包名所在位置

8,以查找到泄漏112数量

9,以上是快速得出结果,点击下载图标 Heap Dump 

10,保存,也可以保存到其他目录

11,找到你刚刚保存的路径,把文件与路径合并

12,使用 hprof-conv -z (跟上你刚刚合并的文件路径.hprof),在跟上你合并的文件路径,在后面添加容易识别的数字!在按 Enter键,

13,打开 Memory Analyzer软件上面有网盘链接,

14,打开之后点击 File 在点击 Open Heap Dump下拉框 由于截不了图,

15,点击之后会弹框出来!点击你刚刚创建的容易识别的文件

16,此时会弹框点击Finish

17,点击Overview,在点击Histogram

18  点击Group result by 图标

19 ,勾选 Group by Package 下拉框截不了图,也就是最后一个

20,找到包名!也许你的包名与我的不一样

21,右击勾选

23,自己与开发一起分析结果!我自己也不会了!

原文地址:https://www.cnblogs.com/laochun/p/13139656.html