Android 内存管理中的 Shallow heapRetained heap

【Android 内存管理中的 Shallow heapRetained heap】学向勤中得,萤窗万卷书。这篇文章主要讲述Android 内存管理中的 Shallow heapRetained heap相关的知识,希望能为你提供帮助。
所有包含Heap Profling功能的工具(MAT,Yourkit,JProfiler,TPTP等)都会使用到两个名词,一个是Shallow heap Size,另一个是 Retained heap Size. 
shallow heap:
Shallow heap size =对象自身占用的内存大小,不包括它引用的对象。 还会包括一些java语言特性的数据存储单元。
            对于数组对象,它的大小是数组元素对象内存的总和。
Retained heap:
Retained heap size = 当前对象大小+当前对象可直接或间接引用到的对象的大小总和。
(间接引用的含义:A-> B-> C, C 就是间接引用)
  Retained Size就是当前对象被GC后,从Heap上总共能释放的内存大小。
释放大小需要减去被GC Roots直接或间接引用的对象。
 

Android 内存管理中的 Shallow heapRetained heap

文章图片

 
假如虚线不存在:
shallow size 缩写:ss
retained size 缩写:rs
GC root 直接引用了A,B对象
ssA = rsA  同理D,E对象也如此
rsB =  ssB + ssD + ssC + ssE
rsC= ssC+ ssE
  虚线如果存在:
rsB = ssD + ssC
rsC= ssC
 

    推荐阅读