LeakCanary是什么?
LeakCanary是一个Android中使用的内存检测分析工具。
github开源地址:https://square.github.io/leakcanary/
LeakCanary怎么用?
引入LeakCanary2.4的Android库,出现简单的内存泄漏可以方便通过打开Leaks内存泄漏文件,快速定位内存泄漏的位置,对于复杂得多内存泄漏问题可以通过查看LeakCanary库生成的hprof文件进行分析。
具体实例
第一步:在项目的app下build.gradle中添加LeakCanary2.4依赖库。
dependencies {
//LeakCanary内存泄露分析工具
implementation 'com.squareup.leakcanary:leakcanary-android:2.4'
}
第二步:在Activity中书写简单的会造成内存泄露的示例。
@Route(path = ARouterPath.blog75)
//LeakCanary工具使用
public class Case75 extends AppCompatActivity {
private static Context sContext;
// private static View sView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_case75);
/**
* 【内存泄露原因分析】
* 静态对象持有Activity的引用,
* 导致Activity无法被回收。
*/
sContext = this;
// sView = new View(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
/**
* 【解决方法】
* 因为这是由于静态对象持有activity引用,导致activity无法被回收
* 所以要解决,就需要将该静态变量在调用onDestroy()方法的时候移除对activity持有的引用,
* 这样可以保证activity被正常回收,解除内存泄露问题。
*/
sContext = null;
// sView = null;
}
}
第三步:使用LeakCanary进行内存泄露具体分析。
leakCanary1.jpeg
leakCanary2.jpeg
第四步:使用步骤2中的解决方法,解决本例中的内存泄露。
leakzero.jpeg











网友评论