본문 바로가기

ANDROID/Performance

[안드로이드] 메모리 누수 감지를 위한 LeakCanary 앱에 적용하기

아직도 메모리 누수 문제를 해결하지 못해 여러 방법으로 어디서 누수가 생기는지, 어떤 변수를 손봐야 하는지 감이 잘 오지 않아서


책을 참고하는 중에 LeakCanary라는 무료 라이브러리를 알게 됐다.


중요한건 쓰여진 모든 적용방법을 쓰고도 실행이 되지않아 어떻게 사용할지 잘 몰랐는데


유투브 영상까지 참조하면서 매니페스트 파일까지 건드려야 한다는 걸 알았다.


Getting started

In your build.gradle:

dependencies {
  debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
  releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
}

In your Application class:

public class ExampleApplication extends Application {

  @Override public void onCreate() {
    super.onCreate();
    if (LeakCanary.isInAnalyzerProcess(this)) {
      // This process is dedicated to LeakCanary for heap analysis.
      // You should not init your app in this process.
      return;
    }
    LeakCanary.install(this);
    // Normal app init code...
  }
}


먼저 git 저장소에 나와있는대로 build.gradle에 해당 코드를 추가하고


다음 기존 액티비티들 이외에 새로 ExampleApplicaton 클래스를 만들어 위와 같이 정의해주어야만 한다. 


그래들에 코드를 추가한 뒤 싱크를 마쳤다면 아래 코드를 작성하면서 import 가능한 요소들을 알아서 추천해 줄 것이다.



다음으로는 앱의 매니페스트 파일에 <application .. 부분에


android:name="util.ExampleApplication" 을 추가해주어야 한다.


이 작업이 최종적으로 되지않아 leakcanary를 사용할 수 없었다. 


여기까지 마치고 난 뒤 앱을 테스트하면서 메모리 leak을 감지하고 팝업창 및 로그를 기록하여 보여주는 것을 확인할 수 있었다.




< 참조 >


도서 : 안드로이드 앱 성능 최적화 - 더그 실라스


유투브 : https://www.youtube.com/watch?v=a5YV6cwerX0


git repository: https://github.com/square/leakcanary