Android Studio 中的 HProf靜態分析

HProf 在 Android Studio 中的展示詳解,基於我對其的理解,我將其根據 heap,count,size,其他將其分成了 4 個層次。

Android Studio 中的 HProf靜態分析

第一層 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 中的差不多。根據引用鏈可以找出這個實例是如何被分配的。


分享到:


相關文章: