Android LeakCanary

大小:5.64MB

版本:1.0

语言:简中

更新:2021-12-31

资源说明

《Android LeakCanary》是一款Android内存泄露分析工具,这款软件能够分析手机中的存储数据是否泄漏,还能提高手机存储设备的使用寿命,软件内的功能非常丰富,操作也很简单,是一款非常不错的软件,感兴趣的小伙伴欢迎下载使用噢!

Android LeakCanary

软件功能

查找所有的 com.squareup.leakcanary.KeyedWeakReference 实例。

你可以改变处理完成的默认行为,将 leak trace 和 heap dump 上传到你的服务器以便统计分析。

你需要在 MAT 或者 YourKit 之类的内存分析工具中反复查看,找到那些原本该被回收掉的对象。

检查 key 字段

Find the KeyedWeakReference that has a key field equal to the reference key reported by LeakCanary.

找到 key 和 和 logcat 输出的 key 值一样的 KeyedWeakReference。

referent 字段对应的就是泄露的对象。

剩下的,就是动手修复了。最好是检查到 GC root 的最短强引用路径开始。

HeapAnalyzer 计算 到 GC roots 的最短强引用路径,并确定是否是泄露。如果是的话,建立导致泄露的引用链。

保存了 7 个 dump 文件和 leak trace。你可以在你的 APP 中,定义R.integer.__leak_canary_max_stored_leaks 来覆盖类库的默认值。

软件特色

1. 虚拟机栈(栈帧中的本地变量表)中的引用的对象。

2. 方法区中的类静态属性引用的对象。

3. 方法区中的常量引用的对象。

4. 本地方法栈中JNI(即一般说的Native方法)的引用的对象。

使用说明

关于代码检查

的IntelliJ平台提供专为静态代码分析工具(所谓的代码检查),帮助您维护和清理你的代码不执行它。有关更多信息,请参考IntelliJ IDEA Web帮助代码检查。在IntelliJ IDEA你会发现一组内置的检查,是由他们的目标和意义的组合。

你可以通过使用IntelliJ IDEA接口创建自定义的检查(请参阅创建自定义检查)。或者,您可以开发插件来实现自定义检查。

使用的技术

样品的comparing_references_inspection插件说明以下技术的使用:

如何分析PSI树。

如何找到一个在PSI树利率java令牌。

如何检查java代码使用basejavalocalinspectiontool类在IntelliJ IDEA编辑器。

如何创建一个JUnit测试该插件使用ideatestfixturefactory类。

常见问题

(1). 如何导出 hprof 文件

可以参阅 AndroidHeapDumper.java 的代码。

(2). 如何分析 hprof 文件

这是个比较大的话题,感兴趣的可以移步另外一个开源库 HAHA,它的祖先是 MAT。

(3). 如何使用 HandlerThread

可以参阅 AndroidWatchExecutor.java的代码,特别是关于 Handler, Loop 的使用。

如何判断某个变量是否被已经被 GC 回收

可以参阅 RefWatcher.java 的 ensureGone() 函数。最主要是利用WeakReference和 ReferenceQueue 机制。简单地讲,就是当弱引用 WeakReference 所引用的对象被回收后,这个 WeakReference 对象就会被添加到ReferenceQueue 队列里,我们可以通过其 poll() 方法获取到这个被回收的对象的 WeakReference 实例,通过判断其是否为 null 进而知道需要监控的对象是否被回收了。

同类推荐
更多