时间:2021-12-27 11:17:00 | 栏目:Android代码 | 点击:次
使用Android Studio 4.1来完成内存泄漏的定位 目前网上大多数的文章都是在介绍Profile的使用,可以帮忙你检查出有内存泄漏,谁的内存泄漏.但是根据文章定位谁引起的这个泄漏,一直没有找到方法,通过几次努力,自己找到了比较容易的路径,希望对其他的朋友有帮助
下面文章内使用的Demo在下面的地址 githubDemo 在页面内点击简单例子-> 内存泄漏-> 接着退回到上一个页面完成泄漏模拟
在TestActivity类中定义context的静态变量,onCreate时把这个变量赋值为当前Activity的context.在回退到上一个页面时,因为静态变量的持有,导致这个TestActivity无法释放,产生内存泄漏
首先完成Dump收集
首先我们吊起TestActivity,然后回退到上一个页面,此时内存中应该没有TestActivity,如果有,那么就说明出现了内存泄漏.然后根据下图来完成一次dump收集
点击3时进入下图
首先先点击1来完成gc内存回收 2选择产生dump文件
Profiler根据dump文件来分析内存泄漏,跳转到下图.
1.表示有几个内存泄漏
2.查看当前的内存泄漏对象,我们可以先关注自己的工程的内存泄漏.
3.是对象实例,可能这个对象有多个泄漏对象
4.代表引用
5.点击5以后,6就可以很容易定位到是什么变量导致的这个对象的内存泄漏.
从下图就可以很容易看到是因为我们定位的静态变量引用导致的问题.