使用adb命令导出hprof文件

news2024/12/25 10:22:53

我们可以使用android studio profiler导入hprof文件分析android应用的内存问题。那么如何从手机上面导出这份文件呢?

把应用的heap 区的数据取出来保存在一个hprof文件上,然后把hprof文件导入到可以查看这个文件的工具上(如android studio profiler),分析里面的数据,为解决我们的应用存在的内存问题而去找出根本问题所在。

在使用adb命令生成hprof文件之前,先运行应用并进行一些操作,尤其是一些能够触发问题的操作。

ADB的全称是Andriod Debug Bridge,安卓调试桥。我们可以用这个工具对手机设备进行一些操作,如安装、卸载和在设备上运行shell命令。我们接下来就是要在手机上运行shell命令。

第一步,查询应用的进程ID

adb shell ps | grep <VALUE> 

上面这条命令是先用adb shell ps列出所有的进程,然后把结果集合通过管道“|”,传递给grep命令进行过滤,grep把带有VALUE的行都列出来,那么我们等一下就筛选出有我们应用包名的行出来就OK,就能找到应用的进程ID。

platform-tools % ./adb shell ps | grep com.example.myleakcanary
u0_a153       2434  1306 14676824 127904 0                  0 S com.example.myleakcanary

2434就是我们的应用com.example.myleakcanary的进程ID(PID)。

第二步,生成应用heap dump的hprof文件

这一步的目的就是把我们安卓应用的heap(堆)区里的数据都导出来。

adb shell am dumpheap <PID> <HEAP-DUMP-FILE-PATH> 

注意:HEAP-DUMP-FILE-PATH是指在手机上的文件路径,千万不要把它写成是你PC上的路径。

platform-tools % ./adb shell am dumpheap 2434 /data/local/tmp/myleakcanaryheapdump.hprof
File: /data/local/tmp/myleakcanaryheapdump.hprof
Waiting for dump to finish...
platform-tools % 

第三步,把hprof文件从手机上拉到PC上

adb pull <HEAP-DUMP-FILE-PATH> <DESTINATION>

HEAP-DUMP-FILE-PATH是hprof文件在手机的文件路径,DESTINATION是PC上的目录,就是我们要把文件放到这个目录,如果不指定就是放在当前目录。

platform-tools % ./adb pull /data/local/tmp/myleakcanaryheapdump.hprof ~/Desktop
/data/local/tmp/myleakcanaryheapdump.hprof: 1 file pulled, 0 skipped. 237.8 MB/s (34774720 bytes in 0.139s)
platform-tools % 

第四步,使用android studio profiler打开hprof文件进行分析

打开android studio, View > Tool Windows > Profiler,点击“+”> Load from file…请添加图片描述
选择导出的文件就可以了。如下图:
在这里插入图片描述

小贴士:
adb命令在sdk/platform-tools这个目录里。其次hprof文件通常都会很大,你的应用运行越久就越大。所以尽量通过android studio profiler分析问题,有必要时再考虑应用的heap dump。

在分享这些内容时,是参考了https://ayusch.com/how-to-capture-heap-dump-from-android/这篇文章的。大家有兴趣可以看看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Security总结

目录 介绍 项目搭建 Security认证 UserDetailsService 内存认证 数据库认证 PasswordEncoder密码解析器 自定义登录页面 退出登录 CSRF防护 Remember me Security授权 RBAC 权限表设计 查询访问权限 配置类设置访问权限 自定义访问控制逻辑 注解设置访问权限 Secured Pre…

29.前端笔记-HTML-Html5的新特性

目录1、HtML5新增的语义化标签2、HTML5新增的多媒体标签&#xff08;1&#xff09;音频标签&#xff1a;< audio>audio的常见属性&#xff08;2&#xff09;视频标签&#xff1a;< video>video常见属性3、新增表单元素input的类型type4、新增表单属性1、HtML5新增的…

R语言中的生存分析Survival analysis晚期肺癌患者4例

第1部分&#xff1a;生存分析简介 最近我们被客户要求撰写关于生存分析的研究报告&#xff0c;包括一些图形和统计输出。本演示文稿将介绍生存分析 &#xff0c;参考&#xff1a; Clark, T., Bradburn, M., Love, S., & Altman, D. (2003). Survival analysis part I: Ba…

06 数学软件与建模---拟合

一、知识储备 1.曲线拟合问题的提法 已知一组&#xff08;二维&#xff09;数据&#xff0c;即平面上 n个点&#xff08;xi,yi) i1,…,n, 寻求一个函数&#xff08;曲线&#xff09;yf(x), 使 f(x) 在某种准则下与所有数据点最为接近&#xff0c;即曲线拟合得最好&#xff0…

前后端分离项目-Springboot 【后端框架搭建,SSM】

1.创建新项目 点击File->New->Project 选择Spring Initializr 填写信息 修改Group修改Artifact修改管理类型Maven&#xff08;带有文件目录&#xff09;修改Java version 选择依赖 这里只需要选择Web->Spring Web即可 创建的文件目录如下 2.创建文件目录 controlle…

【深入浅出Spring原理及实战】「原理分析专题」从零开始教你SpringEL表达式使用和功能分析讲解指南(上篇)

Spring EL表达式语言,这种语言jsp中学到的el,但是在整个spring之中其表达式语言要更加的复杂,而且支持度更加的广泛,最重要的是他可以进行方法的调用,对象的实例化,集合操作等等,但是唯一的难点就是:代码太复杂了,表达式太复杂了。深刻领会,spring中针对于字符串的改进,程序员使…

基于jsp+mysql+ssm医院出车管理与绩效分配系统-计算机毕业设计

项目介绍 本毕业设计主要实现集人性化、高效率、便捷等优点于一身的出车管理系统与绩效分配系统&#xff0c;完成系统用户管理、车辆信息管理、调度员信息管理、驾驶员信息管理、救护员信息管理、科室人员管理、院领导信息管理、调度信息管理、出车统计等功能模块。系统通过浏…

Spring Cloud微服务之loadbalancer负载平衡

Spring Cloud微服务之loadbalancer负载平衡 小学时候&#xff0c;曾经做过这样的数学题。 说有一个水池子&#xff0c;上面有一个排水管&#xff0c;下面有一个进水管&#xff0c;开一个进水管&#xff0c;6个小时灌满水池&#xff0c;开一个排水管&#xff0c;10个小时放光整…

给博客网站添加loading加载中动画代码

只需添加几行代码&#xff0c;就可以加强浏览者的体验,不在等待页面加载时感到枯燥&#xff0c;从而关闭网页&#xff0c;很多网站都会制作一个“网页正在加载中”的提示效果或显示加载进程&#xff0c;加载完成后提示消失&#xff0c;大部分都应用在网站的首页。当然网上很多教…

02时间复杂度与空间复杂度

开始系统学习算法啦&#xff01;为后面力扣和蓝桥杯的刷题做准备&#xff01;这个专栏将记录自己学习算法是的笔记&#xff0c;包括概念&#xff0c;算法运行过程&#xff0c;以及代码实现&#xff0c;希望能给大家带来帮助&#xff0c;感兴趣的小伙伴欢迎评论区留言或者私信博…

如何将多个视频剪辑到一起?如何把两段视频合成一段

如何将多个视频剪辑到一起&#xff1f;那么如何拼接视频&#xff1f;接下来小编就带大家一起了解下有关视频拼接的几款工具推荐。 工具一&#xff1a;TS视频拼合工具 TS视频合并工具是一款轻便简单的视频合并工具&#xff0c;主要是用于合并TS视频文件的工具&#xff0c;当用…

【分享】本地js文件替换源网页js文件的方法

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!本地js文件替换源网页js文件的方法 环境 win10Fiddlerchrome方法一:Fiddler抓包替换js文件 自动回复器–…

HashMap源码分析以及面试题

目录 5、HashMap源码分析 5.1、初始化容量 5.2、负载因子是多少&#xff1f; 5.3、负载因子可以大于或小于0.75吗&#xff1f; 5.4、扩容长度为多少&#xff1f; 5.5、下标是怎么计算的&#xff1f; 5.6、hash冲突&#xff0c;是怎么解决的&#xff1f; 5.7、什么时候…

[附源码]JAVA毕业设计英语课程学习网站(系统+LW)

[附源码]JAVA毕业设计英语课程学习网站&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

安装 NVSwitch GPU 服务器的 cuda 驱动版本、nvidia-docker 指南

一&#xff0c;安装 Cuda 驱动 可参考笔者之前写过的文章&#xff1a; 升级 GPU 服务器 cuda 驱动版本指南 如果出现如下报错&#xff0c;则需安装 gcc、kernel-devel&#xff0c;请参考下面第二步安装 gcc、kernel-devel。 二&#xff0c;安装 gcc、kernel-devel 1&#…

基于狮群算法优化的lssvm回归预测-附代码

基于狮群算法优化的lssvm回归预测 - 附代码 文章目录基于狮群算法优化的lssvm回归预测 - 附代码1.数据集2.lssvm模型3.基于狮群算法优化的LSSVM4.测试结果5.Matlab代码摘要&#xff1a;为了提高最小二乘支持向量机&#xff08;lssvm&#xff09;的回归预测准确率&#xff0c;对…

[附源码]计算机毕业设计高校车辆管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

地表最强:免费文字转语音工具

0、前言 我们在刷短视频的时候&#xff0c;经常会听到一些AI合成声音&#xff0c;它们有各种音色、语调&#xff0c;甚至不同的情绪&#xff0c;听起来与人声无异&#xff0c;其实这些大都是利用微软Azure的文字转语音技术来实现的。 虽然国内也有很多配音工具&#xff0c;但…

【优化算法】粒子群优化算法

粒子群优化算法粒子群优化算法简介粒子群优化算法原理粒子群优化算法的数学描述粒子群优化算法框架PySwarms&#xff1a;Python中粒子群优化的研究工具包PySwarms快速使用示例&#xff1a;编写自己的优化循环相关资料粒子群优化算法简介 粒子群优化算法(Particle Swarm Optimi…

如何安然度过行业大萧条,听听10年测试老鸟的分析

国内的互联网行业发展较快&#xff0c;所以造成了技术研发类员工工作强度比较大&#xff0c;同时技术的快速更新又需要员工不断的学习新的技术。因此淘汰率也比较高&#xff0c;超过35岁的基层研发类员工&#xff0c;往往因为家庭原因、身体原因&#xff0c;比较难以跟得上工作…