iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >android studio内存分析之Memory profiler的使用
  • 314
分享到

android studio内存分析之Memory profiler的使用

androidstudioandroidide 2023-10-27 17:10:57 314人浏览 泡泡鱼
摘要

目录 Android Studio中内存分析工具Memory profiler的使用1. 打开Memory Profiler2. 工具使用3. 内存选项说明4. 内存性能分析器概览5. 内存计

目录

Android Studio中内存分析工具Memory profiler的使用

参考文章

1. 打开Memory Profiler

有两种方式打开,第一种通过标题栏打开:
在这里插入图片描述
第二种通过下方菜单栏打开
在这里插入图片描述

2. 工具使用

打开后是这样的:
在这里插入图片描述
打开后,点击 + 号,选择自己包名
在这里插入图片描述
选择完成后,就会创建你项目的SESSIONS界面:
在这里插入图片描述
如果想删除这个SESSIONS,右键删除:
在这里插入图片描述
点击memory这一列
在这里插入图片描述
点击后到内存捕获类型页面

3. 内存选项说明
  • 捕获堆转储(Capture heap dump):查看应用程序中在特定时间点使用内存的对象
  • 记录Native分配(Record native allocations):查看每个C/C++对象在一段时间内是如何分配的
  • 记录java/Kotlin分配(Record java/kotlin allocations):查看在一段时间内如何分配每个java/kotlin对象
    在这里插入图片描述
    然后是这个页面
    在这里插入图片描述
    在这里插入图片描述
    然后看到这个页面
    在这里插入图片描述
    在这里插入图片描述
4. 内存性能分析器概览

原文链接
内存性能分析图
当您首次打开内存性能分析器时,您将看到一条表示应用内存使用量的详细时间轴,并可使用各种工具强制执行垃圾回收、捕获堆转储以及记录内存分配
在这里插入图片描述

  1. 用于强制执行垃圾回收事件的按钮
  2. 用于捕获堆转储的按钮
  3. 用于指定性能分析器多久捕获一次内存分配的下拉菜单
  4. 用于缩放时间轴的按钮
  5. 用于跳转到实时内存数据的按钮
  6. 事件时间轴,显示活动状态、用户输入事件和屏幕旋转事件
  7. 内存使用量时间轴,它会显示以下内容
  • 一个堆叠图表,显示每个内存类别当前使用多少内存,如左侧的 y 轴以及顶部的彩色键所示
  • 一条虚线,表示分配的对象数,如右侧的 y 轴所示
  • 每个垃圾回收事件的图标
5. 内存计算方式

内存性能分析器顶部看到的数字
在这里插入图片描述
内存计数中的类别如下

  • Java:从 Java 或 Kotlin 代码分配的对象的内存
  • Native:从 C 或 c++ 代码分配的对象的内存
  • Graphics:图形缓冲区队列为向屏幕显示像素(包括 GL 表面、GL 纹理等等)所使用的内存
  • Stack:您的应用中的原生堆栈和 Java 堆栈使用的内存。这通常与您的应用运行多少线程有关
  • Code:您的应用用于处理代码和资源(如 dex 字节码、经过优化或编译的 dex 代码、.so 库和字体)的内存
  • Others:您的应用使用的系统不确定如何分类的内存
  • Allocated:您的应用分配的 Java/Kotlin 对象数。此数字没有计入 C 或 C++ 中分配的对象
6. 查看内存分配

选择Capture heap dump,并点击Record按钮,开始捕获,捕获完成后,点击Stop,进行分析
在这里插入图片描述
查看捕获结果
在这里插入图片描述
在这里插入图片描述
检查分配记录步骤:

  1. 点击 Class Name 列标题以按字母顺序排序。然后,点击一个类名称。此时下侧将出现
  2. Instance View 窗格,显示该类的每个实例
  3. 在 Instance View 窗格中,点击一个实例。此时下方将出现 References 标签页,显示该实例被4. 分配到何处以及在哪个线程中。
  4. 在 References 标签页中,右键点击任意行并选择 Jump to Source,以在编辑器中打开该代码

菜单查看说明
在这里插入图片描述
菜单-检查的堆:

  • default heap:当系统未指定堆时
  • image heap:系统启动映像,包含启动期间预加载的类。此处的分配确保绝不会移动或消失
  • zyGote heap:写时复制堆,其中的应用进程是从 Android 系统中派生的
  • app heap:您的应用在其中分配内存的主堆
  • JNI heap:显示 Java 原生接口 (JNI) 引用被分配和释放到什么位置的堆

菜单-分配:

  • Arrange by class:根据类名称对所有分配进行分组。这是默认值

  • Arrange by package:根据软件包名称对所有分配进行分组

  • Arrange by callstack:将所有分配分组到其对应的调用堆栈

  • 捕获Native方式查看内存分配
    捕获Native
    在这里插入图片描述
    native结果数据
    在这里插入图片描述
    结果信息说明:

  • Allocations:在选定时间段内通过 malloc() 或 new 运算符分配的对象数

  • Deallocations:在选定时间段内通过 free() 或 delete 运算符解除分配的对象数

  • Allocations Size:在选定时间段内所有分配的总大小(以字节为单位)

  • Deallocations Size:在选定时间段内所有已释放内存的总大小(以字节为单位)

  • Total Count:Allocations 列中的值减去 Deallocations 列中的值所得的结果

  • Remaining Size:Allocations Size 列中的值减去 Deallocations Size 列中的值所得的结果

7. 捕获java/kotlin方式查看内存分配

在这里插入图片描述
Allocation Tracking下拉菜单说明

  • Full:捕获内存中的所有对象分配。这是 Android Studio 3.2 及更低版本中的默认行为
  • Sampled:定期对内存中的对象分配情况进行采样。
  • Off:停止跟踪应用的内存分配
8. 堆转储文件导入和导出
  1. 堆转储文件导出
    在Sessions列表中,点击会话条目右侧的 Export method trace 或 Export system trace 按钮
    在这里插入图片描述
  2. 堆转储文件导入
    Sessions 窗格中点击 Start new profiler session 图标"+",然后选择 Load from file
    在这里插入图片描述

内存性能分析器中的泄漏检测

  1. 检查内存泄漏
    捕获堆转储(Capture heap dump)检测期间操作设备,完成后点击Stop按钮,检测结束后,显示有内存泄漏及内存泄漏的数目
    在这里插入图片描述

  2. 如何查看内存泄漏的位置
    双击内存泄漏的位置,显示内存泄漏的列表
    在这里插入图片描述

  3. 点击列表中其中一个,显示实例对象
    在这里插入图片描述

  4. 点击实例对象,显示详细信息
    在这里插入图片描述

  5. 切换到References选项卡,并点击show nearest GC root only
    在这里插入图片描述

  6. 右键选择jump to source在这里插入图片描述

  7. 跳转到源码,可以看到是thread引起的内存泄漏
    在这里插入图片描述

来源地址:https://blog.csdn.net/weixin_74239923/article/details/132144764

--结束END--

本文标题: android studio内存分析之Memory profiler的使用

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • android studio内存分析之Memory profiler的使用
    目录 Android Studio中内存分析工具Memory profiler的使用1. 打开Memory Profiler2. 工具使用3. 内存选项说明4. 内存性能分析器概览5. 内存计...
    99+
    2023-10-27
    android studio android ide
  • Android Studio使用Profiler来完成内存泄漏的定位
    目录目标 引用 步骤 模拟内存泄漏 使用Profiler 来完成定位 目标 使用Android Studio 4.1来完成内存泄漏的定位 目前网上大多数的文章都是在介绍Profil...
    99+
    2024-04-02
  • android profiler内存分析怎么实现
    要在Android Profiler中进行内存分析,可以按照以下步骤进行操作: 打开Android Studio,并打开要分析的项...
    99+
    2023-10-24
    android profiler
  • android profiler内存分析的方法是什么
    使用Android Profiler进行内存分析有以下几种方法:1. 实时监测:Android Profiler可以提供实时监测应用...
    99+
    2023-09-15
    android
  • Android Studio 3.0上内存泄漏的示例分析
    这篇文章主要为大家展示了“Android Studio 3.0上内存泄漏的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android Studio 3.0上内存泄漏的示例分析”这篇文章...
    99+
    2023-05-30
    android studio
  • 浅谈Android Studio 3.0 工具新特性的使用 Android Profiler 、Device File Explorer
    前言:其实 studio3.0的工具大家也已经使用过一段时间了,自己呢,就是从bate版开始使用的,我觉得比较好用的几个地方。就几个,可能还没用到其他的精髓。但我觉的这个两个功能对我是比较实用的。好那么下面就给大家介绍一下吧。正文:话不多说...
    99+
    2023-05-30
    android studio3.0 roi
  • Android Studio开发之JNI的示例分析
    这篇文章主要介绍了Android Studio开发之JNI的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言Android上层应用使用java开发,不过java并不...
    99+
    2023-05-30
    android studio jni
  • Android性能优化之内存优化的示例分析
    这篇文章主要介绍Android性能优化之内存优化的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、Android内存管理机制1.1 Java内存分配模型先上一张JVM将内存划分区域的图程序计数器:存储当前线...
    99+
    2023-06-15
  • Android中图片占用内存的深入分析
    目录前言一、图片占用内存与宽、高、色彩模式的关系二、图片占用内存与存放文件夹的关系三、从文件中加载图片和从网络加载图片占用内存四、色彩模式五、总结前言 Android 在加载图片的时...
    99+
    2024-04-02
  • android 如何分析应用的内存(十三)——perfetto
    android 如何分析应用的内存(十三) 本篇文章是native内存的最后一篇文章——perfetto perfetto简介 从2018年始,android开发者峰会正式推出perfetto工具。从...
    99+
    2023-09-20
    perfetto heap_profile heap_profile反混淆 heap_profile符号化 android内存分析
  • Linux内存管理之内存回收的示例分析
    这篇文章主要介绍了Linux内存管理之内存回收的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.1 内存回收的目标不是所有的物理内存都可以参与回收的,比如要是把内核...
    99+
    2023-06-16
  • 在 SAP 中使用内存分析器
    有很多免费和专有的工具可以实现同样的功能。您可以使用 SAP 完成的内存分析器项目。它可以让您通过简单的 SQL 语句查找内存中对象的内存泄漏。 此外,您还可以使用JHAT(Java堆分析工具)命令行工具来检查内存。它可以让您通过直方图检查...
    99+
    2023-10-22
  • Visual Studio使用小技巧之区块选择的示例分析
    这篇文章主要介绍Visual Studio使用小技巧之区块选择的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!区块选择(box selection)大家应该都很熟悉了,就是按住Alt键,然后拖动鼠标,跨越多行...
    99+
    2023-06-17
  • JVM系列之内存模型的示例分析
    这篇文章主要介绍JVM系列之内存模型的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 内存模型和运行时数据区这一章学习java虚拟机内存模型(Java Virtual machine menory mod...
    99+
    2023-06-15
  • Java内存分析利器MAT的使用详解
    本篇内容主要讲解“Java内存分析利器MAT的使用详解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java内存分析利器MAT的使用详解”吧!dump文件包含的内容:1,全部的对象:类,域,原生...
    99+
    2023-06-17
  • 内存管理揭秘:Go语言形参内存使用分析
    go语言函数形参在栈中分配内存,可在函数内修改,但不影响调用函数中实际参数的值,这是因为形参是局部变量,与实际参数隔离。 内存管理揭秘:Go语言形参内存使用分析 在Go语言中,函数形参...
    99+
    2024-04-04
    go语言 内存管理
  • java应用开发之JVM运行时内存分析
    目录1.JVM的运行时内存也叫JVM堆2.JVM新创建的对象3.新生代详解4.老年代详解5.永久代1.JVM的运行时内存也叫JVM堆 从GC的角度可以将JVM分为新生代,老年代,永久...
    99+
    2024-04-02
  • 如何实现Android中图片占用内存的深入分析
    小编今天带大家了解如何实现Android中图片占用内存的深入分析,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“如何实现Android...
    99+
    2023-06-26
  • 使用MAT进行JVM内存分析实例
    目录背景描述基础知识MAT简介Heap Dump获取Dump分析实战总结背景描述 公司小程序商城项目,服务器为阿里云。 前段时间总是出现服务器CPU报警现象(设置的阈值为95%,CP...
    99+
    2023-05-18
    MAT进行JVM内存分析 MAT JVM内存 JVM内存分析
  • 分析Android常见的内存泄露和解决方案
    目录一、前言二、Android 内存泄露场景2.1、非静态内部类的静态实例2.2、多线程相关的匿名内部类/非静态内部类2.3、Handler 内存泄露2.4、静态 Activity ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作