使用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,自己与开发一起分析结果!我自己也不会了!