博主博客

什么是内存泄漏?

  • 内存泄漏是指由于疏忽或者错误造成程序未能释放已经不再使用的内存, 内存泄漏不是指内存在物理上的消失, 而是应用程序分配某段内存后, 由于设计错误失去了对于这段内存的控制, 因而造成内存的浪费。

  • 内存泄漏和内存溢出是两码事, 不要混淆, 内存溢出通俗的讲就是内存不够用,现在的只能手机内存越来越大, 内存溢出的情况不是很多, 但是内存泄露情况比较严重, LeakCanary的到来对我们来说是一个简单粗暴, 直观的好工具。

leak_canary

上面这个图片就是这个工具的图标了, 当你的程序处于debug模式的时候, 就能看到他了, 当然release没有
LeakCanary作为一个简单粗暴的工具,用法也相当简单
在build.gradle中引入LeakCanary

debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'

一个是debug包, 一个是release包的, 从引入包的结构也能看出端倪。
由于LeakCanary是测试整个app的内存泄露情况, 所以你需要在你的application中启动它。

    import android.app.Application;
    import com.squareup.leakcanary.LeakCanary;
    public class MyApplication extends Application {
    
        @Override
        public void onCreate() {
            super.onCreate();
            LeakCanary.install(this);
        }
    }