shark是leakcanary 2.0之后引入的hprof分析庫,用于替代效率低下的haha庫,
在leakcanary中所處的位置如下圖所示,包括shark-hprof,shark-graph,shark,shark-android四個模塊

image.png
shark-hprof用于讀取hprof文件,解析hprof,里邊定義了hprof數(shù)據(jù)格式,和java的類,對象,基本數(shù)據(jù)類型一致

image.png
shark-graph 用于索引hprof,找到HeapClass HeapInstance HeapObjectArray HeapPrimitiveArray

image.png
shark用于過濾泄漏對象,構(gòu)建GC引用鏈,找到泄漏路徑

image.png
shark-android里 AndroidObjectInspectors用于檢查一個對象是否泄漏及其泄漏,不泄漏原因。AndroidReferenceMatchers用戶過濾掉系統(tǒng)或者library泄漏。

image.png
leakcanary源碼分析:

image.png

image.png