1. 程式人生 > >第25課:基於MAT分析Shallow Heap和Retained Heap

第25課:基於MAT分析Shallow Heap和Retained Heap

內容:

Shallow Heap和Retained Heap

一、Shallow Heap和Retained Heap

    Shallow Heap:只包含自己堆內的元素物件,不包含引用的物件;     Shallow Size:物件自身佔用的記憶體大小,不包括它引用的物件。針對非陣列型別的物件,它的大小就是物件與它所有的成員變數大小的總和。當然這裡面還會包括一些java語言特性的資料儲存單元。針對陣列型別的物件,它的大小是陣列元素物件的大小總和。     Retained Heap:既包含自身堆的元素物件,也直接或間接引用到的物件;     Retained Size:Retained Size=當前物件大小+當前物件可直接或間接引用到的物件的大小總和。(間接引用的含義:A->B->C, C就是間接引用),換句話說,Retained Size就是當前物件被GC後,從Heap上總共能釋放掉的記憶體。不過,釋放的時候還要排除被GC Roots直接或間接引用的物件。他們暫時不會被被當做Garbage。