shark是leakcanary 2.0之后引入的hprof分析库,用于替代效率低下的haha库,
在leakcanary中所处的位置如下图所示,包括shark-hprof,shark-graph,shark,shark-android四个模块
![](https://img.haomeiwen.com/i7018022/c8f04c9135b239a8.png)
shark-hprof用于读取hprof文件,解析hprof,里边定义了hprof数据格式,和java的类,对象,基本数据类型一致
![](https://img.haomeiwen.com/i7018022/5c1842428d240d53.png)
shark-graph 用于索引hprof,找到HeapClass HeapInstance HeapObjectArray HeapPrimitiveArray
![](https://img.haomeiwen.com/i7018022/058b2cf7be769bd3.png)
shark用于过滤泄漏对象,构建GC引用链,找到泄漏路径
![](https://img.haomeiwen.com/i7018022/54118338e89c0064.png)
shark-android里 AndroidObjectInspectors用于检查一个对象是否泄漏及其泄漏,不泄漏原因。AndroidReferenceMatchers用户过滤掉系统或者library泄漏。
![](https://img.haomeiwen.com/i7018022/2d6b03286ba85450.png)
leakcanary源码分析:
![](https://img.haomeiwen.com/i7018022/073b839bafdf5bc2.png)
![](https://img.haomeiwen.com/i7018022/852581ce937e026f.png)
网友评论