返回顶部
首页 > 资讯 > 移动开发 >【Android】Profiler的使用
  • 330
分享到

【Android】Profiler的使用

android 2023-10-27 16:10:42 330人浏览 安东尼
摘要

【Android】Profiler的使用 前言一、菜单介绍二、使用步骤1.准备程序2.内存泄漏分析3.记录对象数量3.注意 总结 前言 最近在做地图相关业务的时候,发现进入导航的一瞬

Android】Profiler的使用


前言

最近在做地图相关业务的时候,发现进入导航的一瞬间系统特别卡,当时就是用的profiler工具分析出来是因为高德的SDK在进入导航的时候短时间内创建了大量的对象引起内存抖动。这次主要简单介绍Profiler关于分析内存的简单使用,可以分析内存泄漏或者观察应用以及引用的SDK创建了多少对象。

一、菜单介绍

![示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。](https://img-blog.csdnimg.cn/ed83f7831ba84a7784e0754204feeb65.png
下面是上图每个数字对应的简单的介绍

  1. 选择【MEMORY】进行内存分析
  2. 记录系统内存变化,可分析是否有内存泄漏
  3. 一段时间内C/C++的对象的使用数量
  4. 一段时间内Java/Kotlin对象的使用数量
  5. 开始/暂停
  6. 内存变化区域

二、使用步骤

1.准备程序

主要是写一个最简单的mainActivity跳转到SecondActivity的程序,SecondActivity有内存泄漏且创建两个简单的对象
主要代码如下:

public class SecondActivity extends AppCompatActivity {    //内存泄漏的对象(内存泄漏分析使用)    private static Activity object1 = null;    // 观察的创建的对象(记录创建多少对象使用)    private ObserveObject observeObject1;    private ObserveObject observeObject2;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);        //内存泄漏的代码        object1 = this;        //创建观察的对象        observeObject1 = new ObserveObject();        observeObject1.test();        observeObject2 = new ObserveObject();        observeObject2.test();    }}
public class ObserveObject {    public void test(){    }}

2.内存泄漏分析

  1. 点击Profiler菜单,选择自己的程序进入以下界面,然后选择【Capture heap dump】菜单
  2. 进入我们的程序,点击按钮进入SecoondActivity,然后再返回MainActivty。最后点击【Record】
    在这里插入图片描述分析区显示我们进入了MainActivty,SecoondActivity,MainActivty。
  3. 左边会生成一个Heap Dump文件,上面会显示有内存泄漏了
    在这里插入图片描述
  4. 切换以包的形式查看,找到我们的程序的包名,找到对应的Activity,就能找到内存泄漏的对象
    在这里插入图片描述
  5. 修改我们的程序再次观察,内存泄漏的情况没有了
    @Override    protected void onDestroy() {        super.onDestroy();        object1 = null;    }

在这里插入图片描述

3.记录对象数量

  1. 我们在SecondActivity中创建了两个ObserveObject对象的,这次选择【Record Java / Kotlin allocations】菜单,这次要先点击【Record】按钮,然后进入程序,进入SecondActivity,返回MainActivity,点击垃圾回收,再进入SecondActivity,再返回MainActivity。找到我们的包名,找到对应的SecondActivity,可以发现创建了4个ObserveObject,后面为存活时间。时间为空表示还存活着。因为我们在第一次返回MainActivity的时候回收对象了,所以前两个就被回收了,后面的两个还是存活的。
    在这里插入图片描述

3.注意

分析内存泄漏的时候要先操作APP最后点击【Record】。记录对象数量和存活时间先点击【Record】,再操作APP,最后结束后再分析。


总结

以上就是Profiler的简单使用,后续会补充其他用法。

来源地址:https://blog.csdn.net/qq_36185750/article/details/130162888

--结束END--

本文标题: 【Android】Profiler的使用

本文链接: https://www.lsjlt.com/news/496384.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作