• 使用LeakCanary检测内存泄漏


    LeakCanary项目地址:LeakCanary

    使用步骤:

    1、添加引用:

     dependencies {
            debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
            releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
            testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
        }
    

    2、在程序主入口Application中添加一下代码初始化LeakCanary 

    public class App extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            LeakCanary.install(this);
        }
    }
    

    3、编写一个引起内存泄漏的代码,测试代码中,在activity的oncreate()方法中开启了一个匿名内部类的线程,该匿名内部类会持有TestHeapActivity的对象引用

      启动该界面

      

    public class TestHeapActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_test_heap);
            new Thread(new Runnable() {
    
                @Override
                public void run() {
                    while (true) {
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }).start();
        }
    }

    4、设置模拟器横竖屏切换,则该activity会多次启动与销毁,因此内存中会存在多个该activity的引用

    5、多次执行步骤4,此时会出现内存泄漏情况,LeakCanary会检测到内存泄漏,并向通知栏发送一条通知,下拉状态栏打开通知界面,如下图:

     

  • 相关阅读:
    paip.解决Invalid byte 2 of 2byte UTF8 sequence.
    poj1157
    poj1258
    poj1160
    poj1113
    poj1159
    !!!GRETA正则表达式模板类库
    【原创】C#与C++的混合编程采用其中的第三种方法
    WinApi.cs
    C#:正则表达式30分钟入门教程
  • 原文地址:https://www.cnblogs.com/pili/p/6599747.html
Copyright © 2020-2023  润新知