| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- android memory leak
- Hilt
- android clean architecture
- RxJava
- 리싸이클러뷰 최적화
- coroutine
- Koin
- android DI
- 안드로이드 테스트코드
- 코루틴
- 안드로이드 mvvm
- 스타트업 코딩테스트
- 안드로이드 JUnit
- 안드로이드 앱 아키텍처 가이드라인
- 안드로이드 최적화
- 안드로이드 의존성주입
- 안드로이드 hilt
- Android App Architecture Guideline
- 안드로이드 아키텍처 컴포넌트
- 안드로이드 앱 아키텍처 가이드라인 예시
- 안드로이드 클린 아키텍처
- 안드로이드 리싸이클러뷰
- 안드로이드 Mockito
- 안드로이드 mvvm예제
- 안드로이드 앱 아키텍처 가이드라인 설명
- MVVM
- 안드로이드 Espresso
- 안드로이드 앱 아키텍처 가이드라인 사용법
- sharedFlow
- Android MVVM
- Today
- Total
안드로이드 연구소
[A급 개발자 되는 법] 안드로이드에서 메모리 누수 확인 방법 본문
지난번 연구를 통해서 대표적인 메모리 누수를 하는 코드들을 살펴 보았습니다.
하지만 대표적인 예시 외에도 내가 만든 어플리케이션에 어떤 메모리 누수가 있는 확인하는 방법을 알 수 있을까요?
대표적인 방법 2가지를 오늘 소개해보려 합니다.
1. 안드로이드 스튜디오 Memory profiler
(1)상단바 View> Tool windows > Profiler

(2) Profiler > + 버튼 > 디바이스 선택 > 어플리케이션 선택

(3) MEMORY선택

(4) (어플리케이션을 전반적으로 작동하거나 아니면 메모리릭이 의심가는 엑티비티 작동 후 onDestory한 후) Dump Java heap 클릭

(5) show activity/fragment Leaks > app head의 Activity또는 fragment > instance 오른쪽 마우스 클릭 jump to source

이게 안드로이드 스튜디오에서 공식적으로 메모리 누수를 확인 하는 방법!
https://developer.android.com/studio/profile/memory-profiler?hl=ko
한번 세팅해놓으면 어떤 인스턴스에서 누수가 발생했는지 좋은 방법입니다.
2. Leak canary
외부 라이브러리를 통해서도 메모리 누수를 확인할 수 있습니다.
방법은 아주 심플한데 build.gradle에 아래 코드 넣고 sync해주면 끝입니다.
(최신 버전은 해당 로그를 통해 확인하세요. https://square.github.io/leakcanary/changelog/)
dependencies {
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.10'
}
그리고 빌드 실행을 한번 하면은 디바이스에서 어플리케이션이 실행되면서 홈으로 가보시면 "Leaks"라는 어플이 깔려 있습니다.
메모리 누수가 발생하는 화면에서 onDestory하게 되면 어플 푸시 메시지로 알림이 오게 됩니다.
바로 바로 어떤 화면에서 발생했는지 알 수 있기때문에 세팅하거나 클릭하는거 없이 너무 쉽게 확인가능합니다.
아래 블로그에서 자세하게 설명을 해놓아서 작동원리도 한번 읽어 봐주시면 좋을 것 같습니다.
https://leveloper.tistory.com/197
[Android] LeakCanary로 메모리릭 잡기
LeakCanary란? LeakCanary란 Square사에서 만든 오픈소스 라이브러리로써, 메모리릭을 감지하여 OOM(Out of Memory) 에러를 줄일 수 있도록 도와준다. 메모리릭(Memory leak)이란? 메모리릭이란 애플리케이션에
leveloper.tistory.com
위 두 방법들은 어떤 엑티비티나 프레그먼트에서 어떤 인스턴스에서 메모리 누수가 발생하는지 확인 할 수 있습니다.
앞의 챕터에서 배운 가장 대표적인 방법
- onDestory시에 인스턴스를 null로 초기화한다.
- 약한 참조로 인스턴스를 불러온다.
두 가지로 여러분의 어플리케이션에 한번 적용해보세요!
'안드로이드 연구소' 카테고리의 다른 글
| [코딩테스트 제출 시 필독] 주석(@어노테이션)으로 코드 검사 개선 (0) | 2023.05.05 |
|---|---|
| [코딩테스트 제출 시 필독] Deprecated메서드 제거 (0) | 2023.05.05 |
| [코딩테스트 제출 시 필독] 안드로이드 린트 검사(Android Lint) (0) | 2023.05.04 |
| [A급 개발자 되는 법] 메모리 누수(Memory Leak)를 잡자 (1) | 2023.05.02 |
| [목차와 목표] 안드로이드 연구소 (0) | 2023.05.01 |