Android Studio Profile使用

·  阅读 525

首先自己写了一个由单例模式导致的内存泄漏

public class Manager {
    public static final Manager ourInstance = new Manager();

    private Context mContext;

    public static Manager getInstance() {
        return ourInstance;
    }

    public void init(Context context) {
        mContext = context;
    }
}
复制代码

然后新建了一个SecondActivity调用Manager的init方法,将SecondActivity的context传给Manager,当SecondActivity销毁后,并不能被回收,就导致了内存泄漏。

PS:华为手机不能用Profile分析,可以用小米或者oppo手机

点击profile

image.png

  1. 先点击Profile
  2. 点击Memory中的区域

image.png

  1. 点击想要检测的一个时刻
  2. 点击Dump Java heap

image.png

此时已经发现了一个内存泄漏

  1. 点击Arrange by package, 就可以在包的目录下,发现SecondActivity没有被回收(此时我已经退出了页面)
  2. 双击SecondActivity可以参考该对象占用的内存信息
  3. 点击References, 可以看到该对象的引用链,进而可以定位具体问题,从而解决内存泄漏

以上就是用profile分析内存泄漏的步骤,给自己一个赞。

分类:
Android
标签:
分类:
Android
标签:
收藏成功!
已添加到「」, 点击更改