android studio 分析 hprof,Android Studio 中的 HProf静态分析

article/2025/10/13 21:53:00

HProf 在 Android Studio 中的展示详解,基于我对其的理解,我将其根据 heap,count,size,其他将其分成了 4 个层次。

ae74e4dee78d

第一层 Heap 分类

Heap 共分为:

zygote heap: 与 android zygote 进程共享的 heap

image heap: 与系统共享的 heap

app heap: 应用本身的 heap

第二层 引用次数 total count,heap count

total count : 表示该类在以上 3 个 Heap 中被引用的次数之和,也即等于上面三个 Heap 的 heap count 之和

heap count : 表示该类在当前 Heap 中被引用的次数

第三层 各种size的含义, sizeof,shallow size,retained size,dominatin size

sizeof : 类的大小,相当于 c 语言中的 sizeof 运算符。不过,在 android/java 中,就是各成员变量加起来之和了。一个空对象的大小为 8 ,因为其继承的 Object 大小就是 8。再比如,String的sizeof 就是 16,其大小就是自己的两个整型成员变量的大小加上Object的大小。另外,一个引用其大小本身是 4 ,基本数据类型的大小就是 Java 中的定义的,数组没有大小。

shallow size : 表示该类或者类的实例的所占用的实际内存大小。类的 shallow size 等于该类的所有实例的 shallow size 大小之和。而实例的shallow size 一般就是 sizeof 的大小。基本类型是没有 shallow size 的。

retained size : 表示能被该类直接和间接引用到的类的 shallow size 之和,且包括自身的 shallow size.当一次 GC并发生内存回收后,能被虚拟机回收的最大内存大小。只是说是最大,不能完全回收掉,因为可能有些类还会被别的类引用到,就不能进行回收。

dominatin size:表示该对象能管理到的内存大小,为实例的 shallow size大小与其成员的shallow size之和,注意 shadow$_klass_是没有被计算在内的

第四层 instance,level,Refrence Tree

instance : 表示类所对应的实例的个数

level : 引用级数

Refrence Tree : 引用的树形链,跟 TraceView 中的差不多。根据引用链可以找出这个实例是如何被分配的。


http://chatgpt.dhexx.cn/article/5442ALZe.shtml

相关文章

JProfile 分析OOM hprof文件

JProfile 分析OOM OutOfMemoryError 1.JVM组成 首先要明白JVM组成 方法区-非堆 Method Area、No-HeapJava栈-虚拟机栈 VM Stack、Java Stack本地方法栈 Native Method Stack程序计数器 Program Counter Register堆 Heap 1.1 OOM发生在哪里? OOM可以发生在除了程序计数器外…

java如何打开hprof_hprof是什么文件?如何打开hprof?

hprof是什么文件?如何打开hprof? 发布时间:2020-03-26 17:35:24 来源:亿速云 阅读:1195 作者:小新 hprof是什么文件?如何打开hprof?很多人都不太了解,今天小编为了让大家…

linux命令生成hprof文件,Android平台生成任意进程的hprof文件

一、知识介绍 1.1 为什么要抓取hprof hprof文件中记录了当前进程内存的使用情况,对于一些难以解决的OOM问题,提取出对应进程的hprof文件可以很好的分析这种问题。 分析hprof的工具 Java Heap Analyzes Tool Eclipse Memory Analyzer 1.2 生成hprof指令 adb shell am dumpheap…

java hprof文件_JVM性能调优监控工具hprof使用详解

一、问题现状 现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 …… 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深…

java hprof文件_hprof是什么文件

hprof是什么文件? 是java进程的内存镜像文件,里面包含了内存堆详细的使用信息。 最近学习深入java虚拟机的书,照着里面的例子跑了下。 如何打开hprof? 下面是demo:/** * VM Args:-Xms20m -Xmx20m -XX:HeapD…

Hprof

转载地址:http://geek.csdn.net/news/detail/90509 一、开发者的自测利器-Hprof命令 1. 示例演示 例子程序: /*** PROJECT_NAME: test* DATE: 16/7/22* CREATE BY: chao.cheng**/ public class HProfTest {public void slowMethod() {try {T…

android hprof,Android Hprof 分析

Android Studio 中的 HProf静态分析 HProf 在 Android Studio 中的展示详解,基于我对其的理解,我将其根据 heap,count,size,其他将其分成了 4 个层次。 第一层 Heap分类 Heap 共分为: zygote heap: 与 android zygote 进程共享的 heap image …

android中hprof文件分析

Hprof基本概念 hprof最初是由J2SE支持的一种二进制堆转储格式,hprof文件保存了当前java堆上所有的内存使用信息,能够完整的反映虚拟机当前的内存状态。 格式 Hprof文件由FixedHead和一系列的Record组成,Record包含字符串信息、类信息、栈信…

hprof 文件查看

https://www.jianshu.com/p/4e6e88f1d211 hprof 文件是 Java 的 内存快照文件(Heap Profile 的缩写),格式为 java_pid*.hprof 用于分析 OOM: OutOfMemoryError(堆)内存不足错误 是 JVM 设置 -XX:HeapDumpOnOutOfMemoryError 参数时打印的内容…

Java 内存溢出(二)使用 MAT 分析 .hprof 内存映像文件

目录 一、内存溢出时自动导出 .hprof 文件二、下载安装 MAT三、启动 MAT四、MAT 分析 hprof 文件1.Overview 概览2.Leak Suspects 溢出原因猜测3.Histogram 对象实例数量排序4.Dominator Tree 支配树 .hprof 文件: 是 java 项目的 Heap Dump 文件,也叫内…

Solr文档学习--Solrj的使用

首先启动solr solr.cmd startSolrClient 主要通过SolrClient来连接到Solr服务器 SolrClient有4个实现类 CloudSolrClient SolrJ client class to communicate with SolrCloud. Instances of this class communicate with Zookeeper to discover Solr endpoints for SolrClou…

solrj 对solr 的操作

使用SolrJ操作Solr会比利用httpClient来操作Solr要简单。SolrJ是封装了httpClient方法,来操作solr的API的。SolrJ底层还是通过使用httpClient中的方法来完成Solr的操作。 1、 首先,你需要添加如下jar包 其中apache-solr-solrj-3.4.0.jar、slf4j-api-1.6…

SolrJ的使用

CommonsHttpSolrServer CommonsHttpSolrServer 使用HTTPClient 和solr服务器进行通信。 Java代码 String url "http://localhost:8983/solr"; SolrServer server new CommonsHttpSolrServer( url ); String url "http://localhost:8983/solr";Sol…

sorl

solr: 层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式),Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。 安装:http://blog.csdn.net/millery22/article/details/51446014 对外提…

Solr和Solrj的使用

Solr(4.10.3)&Solrj 部署环境 1.拷贝solr solr-4.10.3\example\solr 目录到【如E:/solr/】,重命名solr为solrhome 【E:/solr/solrhome】 solrhome:solr里面有几个文件 collection1:有一个默认名称为collection1的SolrCore索引库 conf:SolrCore运行配置信息 co…

SolrJ的查询

1.solr是一个全文检索引擎系统,通过部署到tomcat下就可以独立运行,通过http协议对外提供全文检索服务, 就是索引和文档的正删改查服务 2. solr直接操作索引库和文档库, 我们的业务系统中可以使用solrJ(solr的客户端,就是一堆jar包)来调用solr服务端, 让solr服务端操作文档库和…

使用solrJ操作solr常用方法

既然学的是java那么肯定需要用java代码来进行对solr的操作,如果知道在solr后台管理界面进行增删改查等操作,那么用solrJ操作solr会更好理解。 solrJ介绍 solrJ是一个用来访问solr的java客户端,提供了索引和搜索的方法(将一些常用…

solr快速上手:整合SolrJ实现客户端操作(九)

0. 引言 我们前面学习了solr的服务端基础操作,实际项目中我们还需要在客户端调用solr,就像调用数据库一样,我们可以基于solrJ来实现对solr的客户端操作 1. SolrJ简介 SolrJ 是 Solr官方提供的 Java 客户端库,主要用于与 Solr 服…

全文检索solr(五)Solrj的使用

什么是solrj solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,如下图: Solrj和图形界面操作的区别就类似于数据库中使用jdbc和mysql客户端的区别一样。 需求 使用solrj调用solr服务实现对索引库的增删改查操作。 环境准备 So…

Solr-Solrj简单使用

一、SolrJ简介 SolrJ是操作Solr的Java客户端&#xff0c;它提供了增加、修改、删除、查询Solr索引的Java接口。通过solrJ提供的API接口来操作solr服务&#xff0c;SolrJ底层是通过使用httpClient中的方法来完成Solr的操作。 二、依赖配置 <dependency><groupId>…