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

这篇具有很好参考价值的文章主要介绍了android studio内存分析之Memory profiler的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

参考文章

1. 打开Memory Profiler

有两种方式打开,第一种通过标题栏打开:
android studio内存分析工具,android studio,android,ide
第二种通过下方菜单栏打开
android studio内存分析工具,android studio,android,ide

2. 工具使用

打开后是这样的:
android studio内存分析工具,android studio,android,ide
打开后,点击 + 号,选择自己包名
android studio内存分析工具,android studio,android,ide
选择完成后,就会创建你项目的SESSIONS界面:
android studio内存分析工具,android studio,android,ide
如果想删除这个SESSIONS,右键删除:
android studio内存分析工具,android studio,android,ide
点击memory这一列
android studio内存分析工具,android studio,android,ide
点击后到内存捕获类型页面

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

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

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

内存性能分析器顶部看到的数字
android studio内存分析工具,android studio,android,ide
内存计数中的类别如下

  • 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,进行分析
android studio内存分析工具,android studio,android,ide
查看捕获结果
android studio内存分析工具,android studio,android,ide
android studio内存分析工具,android studio,android,ide
检查分配记录步骤:

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

菜单查看说明
android studio内存分析工具,android studio,android,ide
菜单-检查的堆:

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

菜单-分配:

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

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

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

  • 捕获Native方式查看内存分配
    捕获Native
    android studio内存分析工具,android studio,android,ide
    native结果数据
    android studio内存分析工具,android studio,android,ide
    结果信息说明:

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

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

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

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

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

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

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

android studio内存分析工具,android studio,android,ide
Allocation Tracking下拉菜单说明

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

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

  1. 检查内存泄漏
    捕获堆转储(Capture heap dump)检测期间操作设备,完成后点击Stop按钮,检测结束后,显示有内存泄漏及内存泄漏的数目
    android studio内存分析工具,android studio,android,ide

  2. 如何查看内存泄漏的位置
    双击内存泄漏的位置,显示内存泄漏的列表
    android studio内存分析工具,android studio,android,ide

  3. 点击列表中其中一个,显示实例对象
    android studio内存分析工具,android studio,android,ide

  4. 点击实例对象,显示详细信息
    android studio内存分析工具,android studio,android,ide

  5. 切换到References选项卡,并点击show nearest GC root only
    android studio内存分析工具,android studio,android,ide

  6. 右键选择jump to sourceandroid studio内存分析工具,android studio,android,ide

  7. 跳转到源码,可以看到是thread引起的内存泄漏
    android studio内存分析工具,android studio,android,ide文章来源地址https://www.toymoban.com/news/detail-743577.html

到了这里,关于android studio内存分析之Memory profiler的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Eclipse内存分析器 Java内存分析工具MAT(Memory Analyzer Tool)的介绍与使用

    =============================================------------------------ 然后我将堆内存文件转储,就告诉我内存泄漏,分析结果如下,请帮我前后理解关系。我需要向领导汇报。7 instances of “org.apache.catalina.loader.ParallelWebappClassLoader”, loaded by “java.net.URLClassLoader @ 0x4c0008ae8” occupy 17,693,472 (1

    2024年04月26日
    浏览(42)
  • Android 耗时分析(adb shell/Studio CPU Profiler/插桩Trace API)

    1.adb logcat 查看冷启动时间和Activity显示时间: 过滤Displayed,可看到Activity的显示时间 那上面display后面的是时间是指包含哪些过程的时间呢? 模拟在Application中沉睡1秒操作,冷启动情况下: 从上可知 :在冷启动情况下,第一个activity的display是冷启动的总时间=applicati

    2024年02月15日
    浏览(34)
  • 简单使用AndroidStudio 官方Profiler工具进行内存泄漏检查

    Android studio(下面简称AS)为App提供的性能分析工具,在AS3.0+替换掉旧的分析工具,对于其使用方法,官方也有对应的介绍:Android Profiler 对于使用方法,我只用到比较简单的功能,高级的还没用到,使用案例进行简答的使用,在此之前,你可能需要到官方文档中了解Profiler中

    2023年04月08日
    浏览(33)
  • android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用

    在上一篇文章介绍了jdb调试java应用 接下来介绍用UI界面调试java应用,达到同jdb一样的效果。 同样的UI界面有很多选择,如Eclipse,Android Studio,Visual Studio Code.因为Android Studio的诸多不便,结合自身的使用习惯,这里推荐并介绍Visual Studio Code 安装必要的插件 在插件市场中,搜索

    2024年02月14日
    浏览(40)
  • Android 内存泄漏、性能分析常用工具

    一、内存泄漏 1、 MAT-eclipse :“Memory Analyzer Tool”,一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。 2、Leakcanary :一款开源的自动检测内存泄漏的工具。 3、AndroidStudio Profiler :Android Studio 3.0 采用全新

    2024年02月12日
    浏览(41)
  • Android内存泄漏分析及检测工具LeakCanary简介,Android进阶

    @Synchronized override fun expectWeaklyReachable( watchedObject: Any, description: String ) { if (!isEnabled()) { return } removeWeaklyReachableObjects() val key = UUID.randomUUID() .toString() val watchUptimeMillis = clock.uptimeMillis() val reference = KeyedWeakReference(watchedObject, key, description, watchUptimeMillis, queue) SharkLog.d { \\\"Watching \\\" +

    2024年04月25日
    浏览(29)
  • Android13 针对low memory killer内存调优

    在旧版本的安卓系统中,当触发lmk(low memory killer)的时候一般认为就是内存不足导致,但是随着安卓版本的增加lmk的判断标准已经不仅仅是内存剩余大小,io,cpu同样会做评判,从而保证设备性能。这里引入的概念就是psi(Pressure Stall Information)压力失速信息,用来检测内存

    2024年02月21日
    浏览(31)
  • eclipse memory Analyzer(MAT) 内存泄漏分析

      1.1软件下载         Eclipse IDE,它非常有用。因为Memory Analyzer在分析堆内存的时候比较耗费内存,而Eclipse IDE本身又是比较耗费内存的,所以推荐使用独立安装的Memory Analyzer。 安装包地址:https://www.eclipse.org/mat/downloads.php 独立安装的Memory Analyzer的独立版本所需的最低Ja

    2024年02月14日
    浏览(41)
  • Android开发之性能优化工具Profiler

    性能优化问题,在我们开发时都会遇到,但是在小厂和对自己要求不严格的情况下,我都很少去做性能优化; 在性能优化上,基本大家都是通过自己的开发经验和性能分析工具来发现问题,今天给大家分享一下小编最近使用的Profiler工具 帮助开发者了解应用的CPU,内存,网络

    2024年02月11日
    浏览(43)
  • Android开发之性能测试工具Profiler

    性能优化问题,在我们开发时都会遇到,但是在小厂和对自己要求不严格的情况下,我都很少去做性能优化; 在性能优化上,基本大家都是通过自己的开发经验和性能分析工具来发现问题,今天给大家分享一下小编最近使用的Profiler工具 帮助开发者了解应用的CPU,内存,网络

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包