内存泄露-Android Studio 生成Dump 的 HPROF 文件查看和分析工具

2024-02-09 20:38

本文主要是介绍内存泄露-Android Studio 生成Dump 的 HPROF 文件查看和分析工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0. 文章参考

https://blog.csdn.net/rechanel/article/details/76578070

1. HPROF 文件 作用

HPROF查看工具会列出类、类的实例和实例的引用树,以此来帮助你跟踪内存的使用情况,找出内存泄漏的地方。

2. dump Hprof file

Android Studio 到导出 HPROF 文件步骤很简单,Moniter界面中点击 Dump Java Heap 即可

Dump Java Heap

3. HPROF文件查看工具的信息显示

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

4. HPROF文件操作实例

4.1 打开 Capture 视图,选择 HPROF 文件

Capture

4.2 查看 堆信息
  1. App heap 当前 app 使用的堆
  2. Image heap 当前 app 在硬盘上的内存映射
  3. Zygot heap -zygot 复制时继承的库、运行时类和常量的数据库。zygote 空间设备启动时创建,从不分配这里的空间

App heap

4.2 查看视图类型
  1. Class List View
  2. Package Three View

查看视图类型

5. HPROF文件分析工具中分析数据(重要)

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

Analysis Task

这篇关于内存泄露-Android Studio 生成Dump 的 HPROF 文件查看和分析工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/695226

相关文章

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件