21.35MB / 2025-06-17
《Android LeakCanary》是一款Android内存泄露分析工具,这款软件能够分析手机中的存储数据是否泄漏,还能提高手机存储设备的使用寿命,软件内的功能非常丰富,操作也很简单,是一款非常不错的软件,感兴趣的小伙伴欢迎下载使用噢!
查找所有的 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 进而知道需要监控的对象是否被回收了。
21.35MB / 2025-06-17
362.89MB / 2025-06-17
136.88MB / 2025-06-17
58.08MB / 2025-06-17
27MB / 2025-06-17
108.19MB / 2025-06-17
21.35MB
2025-06-17
151.09MB
2025-06-17
362.89MB
2025-06-17
136.88MB
2025-06-17
58.08MB
2025-06-17
27MB
2025-06-17
63.90MB / 2025-04-27
117.94MB / 2025-06-11
69.24MB / 2025-05-28
11.45MB / 2024-12-28
1.90MB / 2024-11-06
210.99MB / 2025-06-09
113.86MB / 2025-02-01
京ICP备14006952号-1 京B2-20201630 京网文(2019)3652-335号 沪公网安备 31011202006753号违法和不良信息举报/未成年人举报:legal@3dmgame.com
CopyRight©2003-2018 违法和不良信息举报(021-54473036) All Right Reserved