Android 內存管理中的 Shallow heap Retained heap
阿新 • • 發佈:2018-11-16
內存 gc roots str 對象大小 數組元素 jprofiler 數組元素對 語言 profile
所有包含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