基于Android Studio4.0的Profiler内存泄露排查方法

创建一个会因为线程没有停止,导致activity destroy无法回收对象而内存泄露的activity。

public class TestActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        new Thread(new Runnable(){
            @Override
            public void run() {
                try {
                    Thread.sleep(1000*1000L);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();

    }
}

1、首先在工具栏打开profiler
在这里插入图片描述
2、选择需要观察的应用
在这里插入图片描述
3、选择内存
在这里插入图片描述
4、依次点击手动GC,即可看到内存堆栈
在这里插入图片描述
5、点击查看leaks即可查看泄露activity可和fragment在这里插入图片描述
6、依次选择类名->对象->展示最可能泄露的位置在这里插入图片描述
即可看到最可能出现泄露的地方,shallow size指的是该对象本身占用内存的大小,retained Size代表该对象被释放后,垃圾回收器能回收的内存总和。
此时可选择注释相关代码,再次进入这个界面退出,再次查看这个界面的泄露位置,可逐一排查该界面的内存泄露。在这里插入图片描述
选择堆栈后点击保存可保存为hprof文件,方便下次查看。在这里插入图片描述
点击加号可选择导入保存的hprof文件
在这里插入图片描述

接下来自己动手试试吧。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值