体验LeakCanary如何做内存泄露检测

引子

  • 最近江湖流传一内存泄露检测的神奇-LeakCanary,于是笔者按耐不住激动的心情,想试一把。但这个工程是gradle的,对于使用eclipse惯了的同学来说伤不起……不过笔者将其改造为eclipse工程了,github地址:https://github.com/cheyiliu/leakcanary/tree/leakcannary_eclipse_project

用法

  1. 下载该工程,导入eclipse并作为lib工程
  2. 在你的测试工程里引入该lib工程
  3. 将lib工程的manifest里的activity, service, permission信息拷贝到测试工程的manifest
  4. 按照官方介绍进行测试 https://github.com/square/leakcanary#how-do-i-use-it,笔者采用了其中的一个例子进行验证,代码如下:
public class MyApp extends Application {

    public static RefWatcher getRefWatcher(Context context) {
        MyApp application = (MyApp) context
                .getApplicationContext();
        return application.refWatcher;
    }

    private RefWatcher refWatcher;

    @Override
    public void onCreate() {
        super.onCreate();
        refWatcher = LeakCanary.install(this);
    }

}


public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Box box = new Box();//来自官方的例子
        Cat schrodingerCat = new Cat();
        box.hiddenCat = schrodingerCat;
        Docker.container = box;
        MyApp.getRefWatcher(this).watch(schrodingerCat);
    }

}

class Cat {
}

class Box {
    Cat hiddenCat;
}

class Docker {
    static Box container;
}

# 结果
*
*

原理

  • TODO

你可能感兴趣的:(内存泄露,leakcanary)