Android 内存管理中的 Shallow heap Retained heap

Posted app

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 内存管理中的 Shallow heap Retained 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直接或间接引用的对象。

 

 

假如虚线不存在:

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

 

以上是关于Android 内存管理中的 Shallow heap Retained heap的主要内容,如果未能解决你的问题,请参考以下文章

Spark内存管理模型

Spark内存管理模型

deep copy and shallow copy

python中的shallow copy 与 deep copy

Android中的内存管理

Android中的内存管理