美文网首页
分析内存泄露工具—LeakCanary用法解析

分析内存泄露工具—LeakCanary用法解析

作者: 千夜零一 | 来源:发表于2021-03-15 14:13 被阅读0次

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

相关文章

网友评论

      本文标题:分析内存泄露工具—LeakCanary用法解析

      本文链接:https://www.haomeiwen.com/subject/ppjkcltx.html