河东软件园:绿色免费的软件下载站! 最新软件|软件分类|软件专题|软件发布

所在位置:首页 > 应用软件 > 编程工具 > Android LeakCanary(检测内存泄漏插件) 最新版

Android LeakCanary(检测内存泄漏插件)

 最新版
  • 软件大小:5.64 MB
  • 更新日期:2017-06-04
  • 软件语言:简体中文
  • 软件类别:编程工具
  • 软件授权:免费软件
  • 软件官网:
  • 适用平台:WinXP, Win7, Win8, Win10, WinAll
  • 软件厂商:

8.9
软件评分

本地下载文件大小:5.64 MB 高速下载需下载高速下载器,提速50%

软件介绍人气软件相关文章网友评论下载地址

为您推荐:编程工具

  leakcanary是一款功能强大的Android内存泄露分析工具,在使用手机时间长以后,就有可能造成系统的内存泄露,就像是电脑的磁盘使用时间长了就会造成扇区损坏,需要进行修复才能获得更多的存储空间,对于手机的存储系统也是一样的,如果您想要分析手机中的存储数据是否存在泄漏,可以下载这款软件帮助您从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方法)的引用的对象。

使用方法

  当 someObjNeedGced 还在内存中时,就会在 logcat 里看到内存泄漏的提示。

Android LeakCanary(检测内存泄漏插件) 最新版

  测试你的 App 时,如果发生了内存泄漏,状态栏上会有通知告诉你。logcat 上也会有相应的 log 通知你。

Android LeakCanary(检测内存泄漏插件) 最新版

  使用MAT或YourKit内存检测工具检测内存的变化,并找出哪个对象应该被垃圾回收;

Android LeakCanary(检测内存泄漏插件) 最新版

  然後看看heapDumper.dumpHeap()怎么生成hprof文件,然后再看heapdumpListener.analyze流程

  AndroidHeapDumper.java

Android LeakCanary(检测内存泄漏插件) 最新版

  然后如果需要就显示在传递到APP进程中的DisplayLeakService,并以通知的形式展示出来,代码如下

Android LeakCanary(检测内存泄漏插件) 最新版

  gc也是可以回收他们.根集的方法精度很高,但是效率低.计数器法精度低(无法处理循环引用),但是执行效率高.

Android LeakCanary(检测内存泄漏插件) 最新版

  只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。

Android LeakCanary(检测内存泄漏插件) 最新版

  它在主线程执行, 但是有一个delay 时间(默认5000 milisecs), 因为对于application 来说,执行destroy activity只是把必要资源回收,activity 对象不一定会马上被 gc回收。

Android LeakCanary(检测内存泄漏插件) 最新版

使用说明

  关于代码检查

  的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 进而知道需要监控的对象是否被回收了。

下载地址

  • Android LeakCanary(检测内存泄漏插件) 最新版

    本地高速下载

人气软件

查看所有评论>>网友评论0

发表评论

您的评论需要经过审核才能显示

精彩评论

最新评论

盖楼回复X

(您的评论需要经过审核才能显示)