zgq105 / blog

2 stars 0 forks source link

内存分析工具的使用总结 #68

Open zgq105 opened 5 years ago

zgq105 commented 5 years ago

image

1. Android Profiler

Android Profiler是Android Studio中提供的性能检测工具,里面包括能源分析器、CPU监控、内存监控和网络监控。这里以内存监控为例简单做个总结。 1.1 打开工具,Run -> Profiler 'app'打开检测工具。 image 1.2 选择memory项,查看内存使用情况,有工具条可以强行内存回收和查看堆信息等。 image 1.3 在 Heap Dump中,可以选择按包过滤类,就以方便查看应用中的类使用的内存情况。 image 1.4 查看堆中的类的变化就可以知道类对象是否有没被回收,从而判断是否存在内存泄漏。 image

2. LeakCanary

LeakCanary是一款开源的内存泄漏查看工具,具体使用步骤为: 2.1 在build.gradle中添加第三方库的引用。

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

2.2 在Application#onCreate初始化框架。

public class MyApplication extends Application {

 public static RefWatcher getRefWatcher(Context context) {
    MyApplication application = (MyApplication ) context.getApplicationContext();
    return application.refWatcher;
  }

  private RefWatcher refWatcher;

  @Override public void onCreate() {
    super.onCreate();
    refWatcher = LeakCanary.install(this);
  }

}

2.3 使用工具监听Activity。

 @Override
    protected void onDestroy() {
        super.onDestroy();
        RefWatcher refWatcher = MyApplication.getRefWatcher(this);
        refWatcher.watch(this);
    }

注:如果检测到Activity有内存泄露,LeakCanary就是自动地显示一个通知。

3. 小结

内存泄漏工具是帮助我们提升开发效率和优化代码的好帮手,我们在开发中需要善用工具帮助我们解决问题,提升生产效率。