how fix memory leak android apps using ddms tool
Geheugenlek testen en verhelpen voor Android-applicaties:
Geheugenoptimalisatie is een grotere uitdaging voor elke ontwikkelaar voordat hij een app naar de Play Store pusht.
c ++ karakter naar string
De prestaties van een app zijn even belangrijk als de functionaliteit. Dit artikel is gebaseerd op de Heap-analyse van een applicatie via DDMS (Dalvik Debug Monitor Service).
De meeste Android-applicaties draaien op JAVA en hebben ook threading-problemen.
Belangrijke notitie - Dalvik Debug Monitor Server (DDMS) -tool is alleen beschikbaar in Android Studio 3.0 en lagere versies. Als u Studio 3.0 en hoger gebruikt, moet u Android Profiler gebruiken om het CPU-, geheugen- en netwerkgebruik van uw app te profileren.
Deze tutorial helpt je om geheugenlekken voor een Android-applicatie te begrijpen en te optimaliseren met behulp van de DDMS-tool. Het analyseren van het geheugen geeft een idee van het geheugen en het optimaliseren van de geheugenwaarden zal daardoor resulteren in minder geheugenlekken.
Wat je leert:
- Veelgebruikte termen
- DDMS (Dalvik Debug Monitor Server)
- Stappen om DDMS te starten via ADT
- Stappen om DDMS te starten via Android Studio
- Gevolgtrekking
- Aanbevolen literatuur
Veelgebruikte termen
Hieronder staan enkele veelvoorkomende termen die we in dit project zullen gebruiken:
- Hoop - Het is het Runtime-geheugen dat beschikbaar is voor toewijzing en dynamisch wordt verdeeld. Het is platformafhankelijk.
- Dalvik hoop - Dalvik heap is een combinatie van klassen en gegevens door zygote.
- Zygoot - Zygote helpt bij het starten van app-processen wanneer het systeem wordt geladen.
- PSS - Het is het aantal pagina's in het geheugen voor een proces, en wordt gemeten in KB.
- Garbage Collection - Garbage collection spoort alle objecten op die nog worden gebruikt en markeert rest als Garbage.
DDMS (Dalvik Debug Monitor Server)
Dit is de tool die helpt bij het analyseren van Runtime Performance Monitoring. Het helpt ook bij het profileren en afstemmen van applicaties.
Belangrijkste dienstenaanbod door DDMS
- Totaal aantal toewijzingen van Heap-objecten
- Statische gegevens van app-threads
- Schermopname van apparaat
- Device File Explorer
- Inkomende oproep en sms-inspectie
- Inspectie van locatiegegevens
- Statische netwerkconsole
- Logcat (uitgebreid, debuggen, beweren, fout)
Geheugenlek:
Een Applicatie houdt een Object lange tijd vast, zelfs nadat het het doel heeft gediend en dit object wordt niet verzameld door GC.
Detectie van geheugenlek:
Over het algemeen toont de Android-applicatie een dialoogvenster Pop-up voor een app die niet reageert of in het ergste geval een uitzondering heeft op het geheugen. Elk apparaat heeft een beperkte heap-grootte en wanneer een toepassing extra geheugen probeert, worden uitzonderingen in acht genomen.
Om de totale heapgrootte van een Android-apparaat te controleren, kunnen we de onderstaande opdrachten gebruiken:
- cat / proc / meminfo | grep MemTotaal
- adb –d pull /system/build.prop
Stappen om DDMS te starten via ADT
Stap 1: Lancering adt-bundel (gemakkelijk verkrijgbaar hier ) Of installeer de ADT-bundel voor Windows-configuratie met behulp van de onderstaande links.
ramen 32: https://dl.google.com/android/adt/adt-bundle-windows-x86-20140702.zip
ramen 64: https://dl.google.com/android/adt/adt-bundle-windows-x86_64-20140702.zip
Stap 2: Klik op SDK
Stap 3: Klik op tools
Stap 4: Klik op monitor.bat (DDMS)
Notitie: Voor heap-analyse is foutopsporings-apk vereist.
Na een succesvolle installatie van de ADT-bundel, gaat u naar de opdrachtprompt (pad instellen, als adb niet wordt herkend als een interne of externe opdracht).
Controleer het apparaat dat is verbonden met een systeem via de adb-opdracht (adb-apparaten). Zodra een apparaat is verbonden, wordt het verbonden met het DDMS-scherm met de pakketnaam van een applicatie.
Stappen om DDMS te starten via Android Studio
Studio -> Tools -> Android -> Android-apparaatmonitor -> Klik op de DDMS-knop in het menu.
Stappen voor analyse van een hoop
- Selecteer de pakketnaam van een app die op het DDMS-scherm verschijnt.
- Selecteer het update heap-pictogram.
- Tik op oorzaak GC voordat u waarden voor elke actie neemt.
- Voer nu op de opdrachtprompt het commando uit - adb shell dumpsys meminfo en druk op enter.
- Waarden verschijnen op de opdrachtprompt.
- PSS total, native, dalvik, heap size, heap free, heap-toegewezen zijn de waarden die de ontwikkelaars zullen helpen bij het debuggen van de geheugencrashes.
- Een betere weergave van gegevens maakt het werk voor een ontwikkelaar gemakkelijker.
- Gegevens zouden moeten zijn als:
- Objecten waarde na klikken op oorzaak GC.
- PSS totaal
- Native heap-heap-grootte
- Dalvik heap-heap-grootte
- Totale heapgrootte
- Native heap-heap-toewijzing
- Dalvik heap-heap alloc
- Totaal van de heap-toewijzing
- Native heap-heap gratis
- Dalvik heap-heap gratis
- Totaal hoop gratis
- Objecten (na klikken op oorzaak GC vanuit DDMS)
- % gebruikt% gratis
Ideaal testen: Probeer voor een betere app-analyse verschillende scenario's uit te voeren door een app op de achtergrond te houden en door op dezelfde pagina te landen, een volledige stroom van deze veelgebruikte scenario's uit te voeren.
Probeer lagere apparaten te gebruiken, aangezien de meest voorkomende crash wordt waargenomen vanwege geheugen dat een Out Of Memory-uitzondering (OOM) is.
DDMS-scherm
Voorbeelden van Dalvik-waarden
Gevolgtrekking
Dit artikel kan worden gebruikt om heapanalyse te testen met behulp van de DDMS-tool. Correcte waarden voor de parameters helpen de Android-ontwikkelaars om het geheugen te optimaliseren.
Kennis van testtools is goed, maar het efficiënt gebruiken van die tools wordt als een kunst beschouwd.
Veel plezier met leren !!
Aanbevolen literatuur
- Appium-zelfstudie voor het testen van mobiele Android- en iOS-apps
- Top 20+ geheugenlekdetectietools voor Java, C ++ op Linux en Windows
- Hoe Android-applicaties te automatiseren met behulp van de TestComplete Tool
- Aan de slag met Robotium - De meest populaire UI-testtool voor Android-applicaties
- 10 beste projectbeheer-apps in 2021 voor Android- en iOS-apparaten
- Handleiding voor het testen van mobiele gebruikersinterface (GUI-testen van iOS- en Android-apps)
- Maak Appium-tests voor een Android-app
- 10 BESTE tijdregistratie-apps voor freelancers [2021 SELECTIEF]