Memory Monitor 的使用---内存泄漏

转载自 :Android Studio - HPROF文件查看和分析工具

当你在Android Studio中使用Android Monitor里的Memory Monitor工具监视内存使用情况时,可以把Java堆快照转储到Android HPROF文件中(译者注:与标准的java hprof文件格式标准不一样)。HPROF查看工具会列出类、类的实例和实例的引用树,以此来帮助你跟踪内存的使用情况,找出内存泄漏的地方。HPROF最初是由J2SE支持的一种二进制堆转储格式。

为什么要查看Java堆

Java堆展示如下信息:

按类展示实例对象的内存使用情况;
每次垃圾回收事件的样本数据,不管是系统触发还是你手动触发的垃圾回收事件;
帮助分析哪些对象类型也许会导致内存泄漏。

但是,HPROF文件只是展示了某一时刻Java堆的使用情况,如果你需要了解某段时间内Java堆使用情况的, 你需要通过分析不同时间点生成的HPROF文件来找出其中的变化。HPROF分析工具可以自动分析出以下两种类型的问题:

所有已经被销毁,但是不能回收的Activity的实例;
重复定义的字符串。

理解HPROF文件查看工具的显示

HPROF文件查看工具界面如下:

这里写图片描述
HPROF文件查看工具

这个工具显示了如下信息:

名称描述 2
Class name类名
Total Count该类的实例总数
Heap Count所选择的堆中该类的实例的数量
Sizeof单个实例所占空间大小(如果每个实例所占空间大小不一样则显示0)
Shallow Size堆里所有实例大小总和(Heap Count * Sizeof)
Retained Size该类所有实例所支配的内存大小
Instance具体的实例
Reference Tree所选实例的引用,以及指向该引用的引用。
DepthGC根节点到所选实例的最短路径的深度
Shallow Size所选实例的大小
Dominating Size所选实例所支配的内存大小

如果你点击了Analyzer Tasks就会展示HPROF分析工具,界面如下图右边板块:
这里写图片描述

HPROF文件分析工具

用HPROF分析工具,可以检测到泄漏的activities、分析出重复定义的字符串。
获取和显示Java堆的快照

要想查看Java堆的快照,必须要经过下面两步:

在内存监视工具里显示一个正在运行的程序
点击Java堆转储按钮
当转储成功是这个内存监视器显示的图标会改变。Android studio创建的HPROF文件名格式为package_yyyy.mm.dd_hh.mm.ss.hprof,使用包名和转储的时间来命名,例如com.android.calc_2015.11.17_14.58.48.hprof。

查看一个已经保存好的HPROF文件

堆转储后,Android studio会自动保存HPROF文件,以便你再次查看。用HPROF查看工具查看HPROF文件的步骤如下:

在主窗口中点击Captures按钮,或者选择 View > Tools Windows > Captures,打开Captures窗口;
打开堆快照文件夹;
双击你想要查看的HPROF文件,打开HPROF文件查看工具界面;
选择你想查看的堆
    App heap - 当前app使用的堆
    Image heap - 当前app在硬盘上的内存映射
    Zygote heap - zygote 复制时继承来的库、运行时类和常量的数据集。zygote空间设备启动时创建,从不分配这里的空间。
选择你想查看的视图选项:
    Class List View
    Package Tree View

HPROF文件查看工具中分析数据

以下步骤是典型工作流程:

在HPROF文件查看工具中选择一个类名;
选择该类的一个实例;
查看引用树;
当需要的时候可以右键引用树种的条目跳转到源码或者实例。

HPROF文件分析工具中分析数据

用HPROF分析工具可以检测到泄漏的activities、分析出重复定义的字串。使用HPROF文件分析工具标准步骤如下:

打开Captures窗口,双击你想要查看的HPROF文件,打开HPROF文件查看工具界面;
点击Android Studio主窗口右边栏上的Analyzer Tasks,默认HPROF文件分析工具会出现在HPROF文件查看工具的右边。
Analyzer Tasks列表中选择你想分析的选项;
点击开始分析的按钮;
查看分析结果,点击结果中条目可在HPROF文件分析工具中查看详情。

数据排序

在HPROF文件查看工具中,点击表格的顶部,可以让表格中数据升序或者将序排列。
展示Java源码

在HPROF文件查看工具中展示的部分项可以直接跳转到源码,右键项目点击Jump to Source就可以在代码编辑器中打开源码。
HPROF文件相关操作

Android Studio中你可以重命名、定位或者删除HPROF文件,你也可以把他转成标准的HPROF文件格式来使用其他的分析工具分析。
重命名HPROF文件

在Android Studio中重命名的HPROF文件仍然会出现在Captures窗口中。
Captures窗口HPROF文件列表中选择你想操作的文件,右键点击Rename
定位HPROF文件

你可以快速找到Android Studio存放HPROF文件的位置。在Captures窗口HPROF文件列表中选择你想操作的文件,右键点击show in explorer,Android Studio会打开系统文件浏览器定位到文件存放的位置。

注意:Android Studio无法在Captures窗口显示那些被移动别的路径下去的HPROF文件,如果想显示请使用File > Open。同理,不要使用系统的文件浏览器来重命名HPROF文件。

删除HPROF文件

Captures窗口HPROF文件列表中选择你想操作的文件,右键点击Delete,Android Studio会从Captures窗口和硬盘上删除文件。
将堆转储文件转化成标准的HPROF文件

转化成标准的HPROF文件后可以使用Android Studio之外的分析工具来分析。在Captures窗口HPROF文件列表中选择你想操作的文件,右键点击 Export to standard .hprof

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android StudioMonitor是一个用于监测和分析Android应用程序性能的工具。它提供了几个不同的监测工具,包括Memory Monitor、Network Monitor、CPU Monitor和GPU Monitor。[3] Memory Monitor用于监测应用程序的内存使用情况。它可以显示应用程序的内存分配情况、堆内存使用情况以及内存泄漏等问题。通过Memory Monitor,开发人员可以及时发现和解决内存相关的性能问题。 Network Monitor用于监测应用程序的网络使用情况。它可以显示应用程序的网络请求和响应信息,包括请求的URL、请求方法、请求头、响应码等。通过Network Monitor,开发人员可以分析应用程序的网络性能,并进行网络调优。 CPU Monitor用于监测应用程序的CPU使用情况。它可以显示应用程序在不同线程上的CPU占用情况,帮助开发人员了解应用程序的CPU性能瓶颈,并进行性能优化。 GPU Monitor用于监测应用程序的GPU使用情况。它可以显示应用程序的GPU渲染帧率、GPU渲染时间等信息,帮助开发人员了解应用程序的GPU性能,并进行优化。 要使用这些监测工具,您可以在Android Studio中打开Monitor窗口,然后选择您想要监测的工具。每个工具都提供了相应的图表和数据,以帮助您分析和优化应用程序的性能。请注意,Android Device Monitor已经被弃用,建议使用Android Studio 3.0及更高版本中提供的更新工具。[1][2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值