leakcanary下载 最新更新|软件分类|软件专题|手机版|论坛转贴|软件发布

您当前所在位置:首页编程开发编程辅助 → Android LeakCanary(检测内存泄漏插件) 最新版

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

最新版

Android LeakCanary(检测内存泄漏插件)
  • 软件大小:6.8M
  • 软件语言:中文
  • 软件类型:国产软件 / 编程辅助
  • 软件授权:免费软件
  • 更新时间:2017-06-01 10:17
  • 软件等级:4星
  • 应用平台:WinAll, WinXP, Win7
  • 软件官网:

ITMOP本地下载文件大小:6.8M

点赞好评0%(0) 差评差评0%(0)

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

小编为您推荐:AndroidLeakCanaryAndroidStudio插件AndroidStudio

Android LeakCanary是一个用于用来检测Android下内存泄漏的插件,它能帮助攻城狮在开发阶段直观快捷的检查出内存泄露的错误和漏洞,有需要的就来IT猫扑下载吧!

Android LeakCanary介绍

LeakCanary 是一个开源的在debug版本中检测内存泄漏的java库,能够帮助攻城狮进行检测内存泄漏的插件。

leakcanary内容

你被概率性的 OOM 困扰么?

有时候,OOM 像幽灵一样,挥之不去,可真想把它揪出来时,又捉之不着。

或许,是时候用 LeakCanary 来诊断一下了。

它是一个用来检查 Android 下内存泄漏的开源库,这篇文章主要介绍其用法、架构和其背后的实现原理。

如果有一个工具能自动完成这些事情,甚至在发生 OOM 之前,就把内存泄漏报告给你,那是多么美好的一件事情啊。

LeakCanary 就是用来干这个事情的。

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

logcat 上也会有相应的 log 通知你。

什么是内存泄露

一些对象有着有限的生命周期。当这些对象所要做的事情完成了,我们希望他们会被回收掉。

但是如果有一系列对这个对象的引用,那么在我们期待这个对象生命周期结束的时候被收回的时候,它是不会被回收的。

它还会占用内存,这就造成了内存泄露。

持续累加,内存很快被耗尽。

比如,当 Activity.onDestroy 被调用之后,activity 以及它涉及到的 view 和相关的 bitmap 都应该被回收。

但是,如果有一个后台线程持有这个 activity 的引用,那么 activity 对应的内存就不能被回收。这最终将会导致内存耗尽,然后因为 OOM 而 crash。

对战内存泄露

排查内存泄露是一个全手工的过程,这在 Raizlabs 的 Wrangling Dalvik 系列文章中有详细描述。

以下几个关键步骤:

1.通过 Bugsnag, Crashlytics 或者 Developer Console 等统计平台,了解 OutOfMemoryError 情况。

2.重现问题。为了重现问题,机型非常重要,因为一些问题只在特定的设备上会出现。

为了找到特定的机型,你需要想尽一切办法,你可能需要去买,去借,甚至去偷。

当然,为了确定复现步骤,你需要一遍一遍地去尝试。

一切都是非常原始和粗暴的。

3.在发生内存泄露的时候,把内存 Dump 出来。

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

5.计算这个对象到 GC roots 的最短强引用路径。

6.确定引用路径中的哪个引用是不该有的,然后修复问题。

很复杂对吧?

如果有一个类库能在发生 OOM 之前把这些事情全部都搞定,然后你只要修复这些问题就好了,岂不妙哉!

LeakCanary

LeakCanary 是一个检测内存泄露的开源类库。

你可以在 debug 包种轻松检测内存泄露。

先看一个例子:

leakcanary

创建一个RefWatcher,监控对象引用情况。

leakcanary

当发现有内存泄露的时候,你会看到一个很漂亮的 leak trace 报告:

GC ROOT static Docker.container

references Box.hiddenCat

leaks Cat instance

我们知道,你很忙,每天都有一大堆需求。所以我们把这个事情弄得很简单,你只需要添加一行代码就行了。然后 LeakCanary 就会自动侦测 activity 的内存泄露了。

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

然后你会在通知栏看到这样很漂亮的一个界面:

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

这样,就万事俱备了! 在 debug build 中,如果检测到某个 activity 有内存泄露,LeakCanary 就是自动地显示一个通知。

leakcanary工作机制

1.RefWatcher.watch() 创建一个 KeyedWeakReference 到要被监控的对象。

2.然后在后台线程检查引用是否被清除,如果没有,调用GC。

3.如果引用还是未被清除,把 heap 内存 dump 到 APP 对应的文件系统中的一个 .hprof 文件中。

4.在另外一个进程中的 HeapAnalyzerService 有一个 HeapAnalyzer 使用HAHA 解析这个文件。

5.得益于唯一的 reference key, HeapAnalyzer 找到 KeyedWeakReference,定位内存泄露。

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

7.引用链传递到 APP 进程中的 DisplayLeakService, 并以通知的形式展示出来。

结论

使用 LeakCanary 之后,我们修复了我们 APP 中相当多的内存泄露。我们甚至发现了 Android SDK 中的一些内存泄露问题。

结果是惊艳的,我们减少了 94% 的由 OOM 导致的 crash。

如果你也想消灭 OOM crash,那还犹豫什么,赶快使用 LeakCanary

更多>>软件截图

推荐软件

    其他版本下载

      精品推荐Android Studio插件

      Android Studio插件
      更多 (30个) >>Android Studio插件AndroidStudio是谷歌设计的一个功能全面的安卓开发环境,装备了为各种安卓设备开应用程序(app)开发所需要的功能。AndroidStudio的代码提示和搜索功能既强大又智能,颜色、图片等内容在布局和代码中可以实时预览。A

      相关文章

      下载地址

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

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

      发表评论

      (您的评论需要经过审核才能显示) 网友粉丝QQ群号:203046401

      查看所有0条评论>>

      更多>>猜你喜欢