Android Studio 中的 HProf静态分析

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


第一层 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 中的差不多。根据引用链可以找出这个实例是如何被分配的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,174评论 18 399
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,745评论 0 6
  • 1. Memory Leak 内存泄漏:对于Java来说,就是new出来的Object 放在Heap上无法被GC回...
    passiontim阅读 4,328评论 0 2
  • 昨天我跟男友探讨一个问题:写书应该积累到足够的知识量在着手去写,还是一边写一边去积累知识? 我现在每天写一篇文章,...
    赵欢喜麻麻阅读 3,226评论 5 13
  • 阿嫂最近身体不好,阿哥喊我们去看她。大哥让我们带点好吃好喝的去探望,哪有不从的道理。 二儿最近不着家,我和三儿两夫...
    青祝芳华阅读 3,725评论 0 0