how fix memory leak android apps using ddms tool
Hur man testar och åtgärdar minnesläckage för Android-applikationer:
Minnesoptimering är en större utmaning för alla utvecklare innan de trycker en app till Play Store.
hur man skapar projekt i förmörkelse
Prestanda för en app är lika viktig som dess funktionalitet. Denna artikel är baserad på Höganalys av en applikation via DDMS (Dalvik Debug Monitor Service).
De flesta Android-applikationer körs på JAVA och har också problem med trådning.
Viktig notering - Verktyget Dalvik Debug Monitor Server (DDMS) är endast tillgängligt i Android Studio 3.0 och lägre versioner. Om du använder Studio 3.0 och senare, se till att använda Android Profiler för att profilera appens CPU, minne och nätverksanvändning.
Denna handledning hjälper dig att förstå och optimera minnesläckage för en Android-applikation med hjälp av DDMS-verktyget. Analys av minnet ger en uppfattning om minnet och optimering av minnesvärdena leder till mindre minnesläckage.
Vad du kommer att lära dig:
- Vanligt använda termer
- DDMS (Dalvik Debug Monitor Server)
- Steg för att starta DDMS via ADT
- Steg för att starta DDMS via Android Studio
- Slutsats
- Rekommenderad läsning
Vanligt använda termer
Nedan listas några av de vanliga termerna som vi kommer att använda i detta projekt:
- Högen - Det är Runtime-minnet som är tillgängligt för allokering och distribueras dynamiskt. Det är plattformsberoende.
- Dalvik hög - Dalvik heap är en kombination av klasser och data efter zygote.
- Zygot - Zygote hjälper till att starta appprocesser när systemet laddas.
- PSS - Det är antalet sidor i minnet för en process och mäts i KB.
- Skräp samling - Sopsamling spårar upp alla objekt som fortfarande används och markerar vila som sopor.
DDMS (Dalvik Debug Monitor Server)
Detta är verktyget som hjälper till att analysera Runtime Performance Monitoring. Det hjälper också till att profilera och ställa in applikationer.
Huvudtjänsterbjudande från DDMS
- Totala tilldelningsstatistik för Heap
- App trådstatik
- Enhetens skärmdump
- Enhetsfilutforskaren
- Inkommande samtal och SMS-inspektion
- Platsdatainspektion
- Statisk nätverkskonsol
- Logcat (Verbose, Debug, Assert, Error)
Minnesförlust:
En applikation har ett objekt under lång tid även efter att ha tjänat syftet och detta objekt samlas inte in av GC.
Detektering av minnesläckage:
I allmänhet visar Android-applikationen en dialogruta som dyker upp för en app som inte svarar eller i värsta fall utan minnesundantag. Varje enhet har begränsad högstorlek och när ett program försöker få ytterligare minne observeras undantag.
För att kontrollera den totala högstorleken för en Android-enhet kan vi använda kommandona nedan:
- katt / proc / meminfo | grep MemTotal
- adb –d pull /system/build.prop
Steg för att starta DDMS via ADT
Steg 1: Starta ADT-paketet (lätt tillgängligt här ) Eller installera ADT-paketet för Windows-konfiguration med länkarna nedan.
windows 32: https://dl.google.com/android/adt/adt-bundle-windows-x86-20140702.zip
windows 64: https://dl.google.com/android/adt/adt-bundle-windows-x86_64-20140702.zip
Steg 2: Klicka på SDK
Steg 3: Klicka på verktyg
Steg 4: Klicka på monitor.bat (DDMS)
Notera: För höganalys krävs debug apk.
Efter framgångsrik installation av ADT-paketet, gå till kommandotolken (ange sökväg, om adb inte känns igen som ett internt eller externt kommando).
Kontrollera om enheten är ansluten till ett system via adb-kommandot (adb-enheter). När en enhet är ansluten ansluts den till DDMS-skärmen med paketnamnet på en applikation.
Steg för att starta DDMS via Android Studio
Studio -> Verktyg -> Android -> Android-enhet Monitor -> Klicka på DDMS-knappen från menyn.
Steg för analys av en hög
- Välj paketnamnet på en app som visas på DDMS-skärmen.
- Välj ikonen för uppdateringshög.
- Tryck på orsak GC innan du tar värden för varje åtgärd.
- Nu på kommandotolken kör kommandot - adb shell dumpsys meminfo och tryck på enter.
- Värden visas i kommandotolken.
- PSS total, native, dalvik, heap size, heap free, heap-alloced är värdena som hjälper utvecklarna att felsöka minneskraschen.
- Bättre representation av data gör arbetet enkelt för en utvecklare.
- Data ska vara som:
- Objektvärde efter att ha klickat på orsakar GC.
- PSS totalt
- Native heap-heap size
- Dalvik hög- högstorlek
- Totalt högstorlek
- Native heap- heap alloc
- Dalvik heap- heap alloc
- Summan av högtilldelningen
- Inbyggd hög - hög gratis
- Dalvik hög - hög gratis
- Totalt hög gratis
- Objekt (efter att ha klickat på orsakar GC från DDMS)
- % använt% gratis
Perfekt testning: För bättre appanalys, försök att utföra olika scenarier genom att hålla en app i bakgrunden och genom att landa på samma sida, utför ett fullständigt flöde av dessa vanliga scenarier.
Försök att använda enheter i nedre delen, eftersom den vanligaste kraschen observeras på grund av minne som är Out of Memory exception (OOM).
DDMS-skärm
Prover av Dalvik-värden
Slutsats
Den här artikeln kan användas för att testa höganalys med DDMS-verktyget. Korrekta värden för parametrarna hjälper Android-utvecklarna att optimera minnet.
Kunskap om testverktyg är bra men att använda dessa verktyg på ett effektivt sätt anses vara en konst.
Happy Learning !!
Rekommenderad läsning
- Appium-handledning för testning av Android- och iOS-mobilappar
- Topp 20+ Memory Leak Detection Tools för Java, C ++ på Linux och Windows
- Hur man automatiserar Android-applikationer med TestComplete-verktyget
- Komma igång med Robotium - det mest populära testverktyget för Android-användargränssnitt
- De 10 bästa apparna för projektledning 2021 för Android- och iOS-enheter
- Handledning för mobil UI-testning (GUI-testning av iOS- och Android-appar)
- Skapa appiumtest för en Android-app
- 10 BÄSTA tidsspårningsappar för frilansare (2021 SELECTIVE)