体验LeakCanary怎么做内存泄露检测
体验LeakCanary如何做内存泄露检测
引子
- 最近江湖流传一内存泄露检测的神奇-LeakCanary,于是笔者按耐不住激动的心情,想试一把。结果伤不起的,这个工程是gradle的,对于使用eclipse惯了的同学来说伤不起……不过笔者将其改造为eclipse工程了,github地址:https://github.com/cheyiliu/leakcanary/tree/leakcannary_eclipse_project
用法
- 下载该工程,导入eclipse并作为lib工程
- 在你的测试工程里引入该lib工程
- 将lib工程的manifest里的activity, service, permission信息拷贝到测试工程的manifest
- 按照官方介绍进行测试 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