现在我们换一种更清晰方便的方式:LeakCanary https://github.com/square/leakcanary

首先将LeakCanary绑在我们的app上 
build.gradle

dependencies{
 dependencies {
   debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2'
   releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'
   testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'
 }
public class SunApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Global.mContext = SunApplication.this.getApplicationContext();
        initializeLeakDetection();
    }

    private void initializeLeakDetection() {
        if (BuildConfig.DEBUG) {
            LeakCanary.install(this);
        }
    }
}

Manifest 添加权限WRITE_EXTERNAL_STORAGE、不然会发生错误、如下代码 
android 6.0以上另外获取权限、详情请见我的博文 Android 6.0 最简单的权限获取方法 RxPermition EasyPermition

  <!--Required by Debug.startMethodTracing() -->
    <!--LeakCanary need this Unable to resume activity
    {com.rvitemtouch.sun.sundagger2application/com.squareup.leakcanary.internal.DisplayLeakActivity}:
    java.lang.UnsupportedOperationException: Could not create leak directory
    /storage/emulated/0/Download/leakcanary-com.rvitemtouch.sun.sundagger2application-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

安装好了、运行app、继续将之前写的(Android AndroidStudio MAT LeakCanary 内存分析之 AndroidStudio 内存泄漏分析 Memory Monitor

Activity反复翻转屏幕、导致内存泄漏

出现内存泄漏提示

AndroidStudio MAT LeakCanary 内存分析之 LeakCanary

Leaks 会伴随我们的app一块install、那么打开leaks、等待一会

AndroidStudio MAT LeakCanary 内存分析之 LeakCanary

找到我们定位的泄漏 打开

AndroidStudio MAT LeakCanary 内存分析之 LeakCanary
就能看出详细的链式结构、上面写的很明白了、正如之前我们所料 
是Memory..Activity的引用被Runnable占用了

相关文章: