LeakCanary:Android 内存泄漏工具

Android 内存泄漏是一个十分头疼的事情。LeakCanary是一款开源软件,主要作用是检测 Android APP 内存泄露。比起以前的 MAT 工具,LeakCanary 有着十分强大的功能,能够在程序发送内存泄漏的时候提示通知,而且学习成本低。同时提供 log 和 hrpof 日志,便于开发者解决问题。

LeakCanary:Android 内存泄漏工具_第1张图片
Paste_Image.png
什么是内存泄露?

一些对象有着有限的生命周期。当这些对象所要做的事情完成了,我们希望他们会被回收掉。但是如果有一系列对这个对象的引用,那么在我们期待这个对象生命周期结束的时候被收回的时候,它是不会被回收的。它还会占用内存,这就造成了内存泄露。持续累加,内存很快被耗尽。

如何使用LeakCanary?

1.添加依赖

dependencies {
  //leakcanary
  debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
  // or 1.4-beta1
  releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
  // or 1.4-beta1
  testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
}

2.Application中调用

public class ExampleApplication extends Application {

  @Override public void onCreate() {
    super.onCreate();
    LeakCanary.install(this);
  }
}
LeakCanary使用关键步骤?

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

2.重现问题。为了重现问题,机型非常重要,因为一些问题只在特定的设备上会出现。为了找到特定的机型,你需要想尽一切办法,你可能需要去买,去借,甚至去偷。 当然,为了确定复现步骤,你需要一遍一遍地去尝试。一切都是非常原始和粗暴的。

3.在发生内存泄露的时候,把内存 Dump 出来。具体看这里。

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

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

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

你可能感兴趣的:(LeakCanary:Android 内存泄漏工具)