how fix memory leak android apps using ddms tool
Android 애플리케이션의 메모리 누수를 테스트하고 수정하는 방법 :
메모리 최적화는 앱을 Play 스토어에 푸시하기 전에 모든 개발자에게 더 큰 과제입니다.
PC 정리를위한 최고의 소프트웨어
앱의 성능은 기능만큼이나 중요합니다. 이 기사는 힙 분석 DDMS (Dalvik Debug Monitor Service)를 통해 애플리케이션의
대부분의 Android 애플리케이션은 JAVA에서 실행되며 스레딩 문제도 있습니다.
중요 사항 – Dalvik 디버그 모니터 서버 (DDMS) 도구는 Android 스튜디오 3.0 이하 버전에서만 사용할 수 있습니다. Studio 3.0 이상을 사용하는 경우 Android 프로파일 러를 사용하여 앱의 CPU, 메모리, 네트워크 사용량을 프로파일 링해야합니다.
이 자습서는 DDMS 도구를 사용하여 Android 애플리케이션의 메모리 누수를 이해하고 최적화하는 데 도움이됩니다. 메모리를 분석하면 메모리에 대한 아이디어를 얻을 수 있고 메모리 값을 최적화하면 메모리 누수가 줄어 듭니다.
학습 내용 :
- 일반적으로 사용되는 용어
- DDMS (Dalvik 디버그 모니터 서버)
- ADT를 통해 DDMS를 시작하는 단계
- Android Studio를 통해 DDMS를 시작하는 단계
- 결론
- 추천 도서
일반적으로 사용되는 용어
다음은이 프로젝트에서 사용할 일반적인 용어 중 일부입니다.
- 더미 – 할당에 사용할 수 있고 동적으로 배포되는 런타임 메모리입니다. 플랫폼에 따라 다릅니다.
- Dalvik 힙 – Dalvik 힙은 zygote 별 클래스와 데이터의 조합입니다.
- 접합자 – Zygote는 시스템이로드 될 때 앱 프로세스를 시작하는 데 도움이됩니다.
- PSS – 프로세스에 대한 메모리 내의 페이지 수이며 KB 단위로 측정됩니다.
- 가비지 컬렉션 – 가비지 수집은 여전히 사용되는 모든 개체를 추적하고 나머지는 가비지로 표시합니다.
DDMS (Dalvik 디버그 모니터 서버)
런타임 성능 모니터링을 분석하는 데 도움이되는 도구입니다. 또한 응용 프로그램의 프로파일 링 및 튜닝에도 도움이됩니다.
DDMS가 제공하는 주요 서비스
- 총 힙 개체 할당 통계
- 앱 스레드 통계
- 장치 화면 캡처
- 장치 파일 탐색기
- 수신 전화 및 SMS 검사
- 위치 데이터 검사
- 네트워크 정적 콘솔
- Logcat (Verbose, Debug, Assert, Error)
메모리 누수 :
응용 프로그램은 목적을 수행 한 후에도 오랫동안 Object를 보유하고 있으며이 객체는 GC에서 수집하지 않습니다.
메모리 누수 감지 :
일반적으로 Android 애플리케이션은 응답하지 않는 앱 또는 최악의 경우 메모리 부족 예외에 대한 대화 팝업을 표시합니다. 모든 장치에는 제한된 힙 크기가 있으며 응용 프로그램이 추가 메모리를 시도 할 때 예외가 관찰됩니다.
Android 장치의 총 힙 크기를 확인하려면 다음 명령을 사용할 수 있습니다.
- 고양이 / proc / meminfo | grep MemTotal
- adb –d pull /system/build.prop
ADT를 통해 DDMS를 시작하는 단계
1 단계: Adt 번들 실행 (쉽게 사용 가능 여기 ) 또는 아래 링크를 사용하여 Windows 구성 용 ADT 번들을 설치합니다.
창 32 : https://dl.google.com/android/adt/adt-bundle-windows-x86-20140702.zip
윈도우 64 : https://dl.google.com/android/adt/adt-bundle-windows-x86_64-20140702.zip
2 단계: SDK를 클릭하십시오.
3 단계 : 도구를 클릭하십시오
4 단계 : monitor.bat (DDMS)를 클릭합니다.
노트 : 힙 분석을 위해서는 디버그 apk가 필요합니다.
ADT 번들을 성공적으로 설치 한 후 명령 프롬프트로 이동합니다 (adb가 내부 또는 외부 명령으로 인식되지 않는 경우 경로 설정).
adb 명령을 통해 시스템에 연결된 장치 (adb 장치)를 확인합니다. 장치가 연결되면 응용 프로그램의 패키지 이름으로 DDMS 화면에 연결됩니다.
Android Studio를 통해 DDMS를 시작하는 단계
Studio-> 도구-> Android-> Android 장치 모니터-> 메뉴에서 DDMS 버튼을 클릭합니다.
힙 분석 단계
- DDMS 화면에 나타나는 앱의 패키지 이름을 선택합니다.
- 힙 업데이트 아이콘을 선택하십시오.
- 모든 행동에 대한 가치를 취하기 전에 원인 GC를 탭하십시오.
- 이제 명령 프롬프트에서 command – adb shell dumpsys meminfo를 실행하고 Enter 키를 누릅니다.
- 명령 프롬프트에 값이 나타납니다.
- PSS total, native, dalvik, heap size, heap free, heap-allocated는 개발자가 메모리 충돌을 디버깅하는 데 도움이되는 값입니다.
- 데이터를 더 잘 표현하면 개발자가 작업을 쉽게 수행 할 수 있습니다.
- 데이터는 다음과 같아야합니다.
- 원인 GC를 클릭 한 후 개체 값.
- PSS 합계
- 기본 힙-힙 크기
- Dalvik 힙-힙 크기
- 총 힙 크기
- 네이티브 힙-힙 할당
- Dalvik 힙-힙 할당
- 총 힙 할당량
- 기본 힙-힙 없음
- Dalvik 힙-힙 없음
- 사용 가능한 총 힙
- 개체 (DDMS에서 원인 GC를 클릭 한 후)
- % 사용 % 무료
이상적인 테스트 : 더 나은 앱 분석을 위해 앱을 백그라운드에 유지하고 동일한 페이지를 방문하여 일반적으로 사용되는 이러한 시나리오의 전체 흐름을 수행하여 다양한 시나리오를 수행하십시오.
메모리 부족 예외 (OOM) 인 메모리로 인해 가장 일반적인 충돌이 관찰되므로 저가형 장치를 사용하십시오.
DDMS 화면
Dalvik 값의 샘플
결론
이 문서는 DDMS 도구를 사용하여 힙 분석을 테스트하는 데 사용할 수 있습니다. 매개 변수의 올바른 값은 Android 개발자가 메모리를 최적화하는 데 도움이됩니다.
테스트 도구에 대한 지식은 좋지만 이러한 도구를 효율적으로 사용하는 것은 예술로 간주됩니다.
행복한 학습 !!
추천 도서
- Android 및 iOS 모바일 앱 테스트를위한 Appium 자습서
- Linux 및 Windows에서 Java, C ++ 용 상위 20 개 이상의 메모리 누수 감지 도구
- TestComplete 도구를 사용하여 Android 애플리케이션을 자동화하는 방법
- Robotium 시작하기-가장 인기있는 Android 애플리케이션 UI 테스트 도구
- Android 및 iOS 기기를위한 2021 년 최고의 프로젝트 관리 앱 10 개
- 모바일 UI 테스트 자습서 (iOS 및 Android 앱의 GUI 테스트)
- Android 앱용 Appium 테스트 생성
- 프리랜서를위한 최고의 시간 추적 앱 10 가지 (2021 SELECTIVE)