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会检测到内存泄漏,并向通知栏发送一条通知,下拉状态栏打开通知界面,如下图: