Android Studio中的HProf静态分析
HProf在Android Studio上的展示很详细,基于我的理解,我将其分为heap、count、size和其他四个等级。
第1层标题分类
Heap共计分为以下几类。
zygote heap:与android zygote进程共享的heap
image heap:与系统共享的heap
app heap:APP应用程序本身的头
第二层参照次数total count,heap count
total count :表示类等于这三个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大小之和
retained size :表示类的所有实例的dominatin size之和。 在GC内存回收后,虚拟机可以回收的最大内存大小。 只能说是最大的。 不能完全回收。 无法回收,因为某些类可能被其他类引用。
dominatin size :表示对象可以管理的内存大小。 通常,对象的shallow size和对象的属性内容与占用的内存大小的总和相同。
第四层实例、级别、参考树
instance :表示与类相对应的实例的数量
level :参照级数
Refrence Tree :引用的树链与TraceView几乎相同
以上是关于hprof的表达分析,hprof的文件协议如下