HProf 在 Android Studio 中的展现详解,基于我对其的理解,我将其根据 heap,count,size,其余将其分红了 4 个层次。java
Heap 共分为:android
zygote heap: 与 android zygote 进程共享的 heap数组
image heap: 与系统共享的 heap并发
app heap: 应用自己的 heapapp
total count : 表示该类在以上 3 个 Heap 中被引用的次数之和,也即等于上面三个 Heap 的 heap count 之和dom
heap count : 表示该类在当前 Heap 中被引用的次数spa
sizeof : 类的大小,至关于 c 语言中的 sizeof 运算符。不过,在 android/java 中,就是各成员变量加起来之和了。一个空对象的大小为 8 ,由于其继承的 Object 大小就是 8。再好比,String的sizeof 就是 16,其大小就是本身的两个整型成员变量的大小加上Object的大小。另外,一个引用其大小自己是 4 ,基本数据类型的大小就是 Java 中的定义的,数组没有大小。.net
shallow size : 表示该类或者类的对象的所占用的实际内存大小。类的 shallow size 等于该类的实例的 shallow size 大小之和对象
retained size : 表示该类的全部实例的 dominatin size 之和。当一次 GC并发生内存回收后,能被虚拟机回收的最大内存大小。只能说是最大,不能彻底回收掉,由于可能有些类还会被别的类引用到,就不能进行回收。blog
dominatin size:表示该对象能管理到的内存大小,通常等于该对象的shallow size 与该对象的属性内容所占用的内存大小之和。
instance : 表示类所对应的实例的个数
level : 引用级数
Refrence Tree : 引用的树形链,跟 TraceView 中的差很少
上面是关于 hprof 的表态分析,而 hprof 的文件协议以下