how fix memory leak android apps using ddms tool
Ako otestovať a opraviť nedostatok pamäte pre aplikácie pre Android:
Optimalizácia pamäte je pre každého vývojára väčšou výzvou pred tlačením aplikácie do obchodu Play.
ako deklarovať multidimenzionálne pole v jave
Výkon aplikácie je rovnako dôležitý ako jej funkčnosť. Tento článok je založený na Analýza haldy aplikácie cez DDMS (Dalvik Debug Monitor Service).
Väčšina aplikácií pre Android beží na JAVA a má tiež problémy so závitmi.
Dôležitá poznámka - Nástroj Dalvik Debug Monitor Server (DDMS) je k dispozícii iba v systéme Android Studio 3.0 a nižších verziách. Ak používate Studio 3.0 a novšie, nezabudnite na profilovanie využitia procesora, pamäte a siete vašej aplikácie použiť Android Profiler.
Tento tutoriál vám pomôže pochopiť a optimalizovať únik pamäte pre aplikáciu pre Android pomocou nástroja DDMS. Analýza pamäte poskytne predstavu o pamäti a optimalizácia hodnôt pamäte bude mať za následok menší únik pamäte.
Čo sa dozviete:
- Bežne používané pojmy
- DDMS (Dalvik Debug Monitor Server)
- Kroky na spustenie DDMS pomocou ADT
- Kroky na spustenie DDMS cez Android Studio
- Záver
- Odporúčané čítanie
Bežne používané pojmy
Nižšie sú uvedené niektoré bežné výrazy, ktoré budeme v tomto projekte používať:
- Halda - Je to runtime pamäť, ktorá je k dispozícii na pridelenie a je distribuovaná dynamicky. Je to závislé od platformy.
- Halda Dalvik - Halda Dalvik je kombináciou tried a údajov od zygoty.
- Zygota - Zygote pomáha spúšťať procesy aplikácií pri načítaní systému.
- PSS - Je to počet stránok v pamäti pre proces a meria sa v kB.
- Zber odpadu - Zber odpadu sleduje všetky objekty, ktoré sa ešte používajú, a značky zostanú ako Odpadky.
DDMS (Dalvik Debug Monitor Server)
Toto je nástroj, ktorý pomáha analyzovať Monitorovanie výkonu za behu. Pomáha tiež pri profilovaní a ladení aplikácií.
Hlavná ponuka služieb prostredníctvom DDMS
- Štatistika celkových pridelení haldy objektov
- Statika vlákna aplikácie
- Snímanie obrazovky zariadenia
- Prieskumník súborov zariadenia
- Kontrola prichádzajúcich hovorov a SMS
- Kontrola údajov o polohe
- Sieťová statická konzola
- Logcat (podrobné, ladenie, tvrdenie, chyba)
Únik pamäte:
Aplikácia drží objekt dlho aj po splnení účelu a tento objekt GC nezhromažďuje.
Detekcia úniku pamäte:
Aplikácia pre Android vo všeobecnosti zobrazuje dialógové okno pre aplikáciu, ktorá nereaguje alebo v najhoršom prípade z pamäte. Každé zariadenie má obmedzenú veľkosť haldy a keď sa aplikácia pokúsi o ďalšiu pamäť, pozorujú sa výnimky.
Ak chcete skontrolovať celkovú veľkosť haldy zariadenia s Androidom, môžeme použiť nasledujúce príkazy:
- mačka / proc / meminfo | grep MemTotal
- adb –d pull /system/build.prop
Kroky na spustenie DDMS pomocou ADT
Krok 1: Spustite balík adt (ľahko dostupný tu ) Alebo pomocou nasledujúcich odkazov nainštalujte balík ADT pre konfiguráciu systému Windows.
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
Krok 2: Kliknite na SDK
Krok č. 3: Kliknite na nástroje
Krok č. 4: Kliknite na monitor.bat (DDMS)
Poznámka: Na analýzu haldy je potrebný ladiaci apk.
Po úspešnej inštalácii balíka ADT prejdite na príkazový riadok (nastavte cestu, ak adb nie je rozpoznaný ako interný alebo externý príkaz).
Skontrolujte zariadenie pripojené k systému pomocou príkazu adb (zariadenia adb). Po pripojení je zariadenie pripojené k obrazovke DDMS s názvom balíka aplikácie.
Kroky na spustenie DDMS cez Android Studio
Štúdio -> Nástroje -> Android -> Monitor zariadenia Android -> V ponuke kliknite na tlačidlo DDMS.
Kroky na analýzu hromady
- Vyberte názov balíka aplikácie, ktorá sa zobrazuje na obrazovke DDMS.
- Vyberte ikonu haldy aktualizácií.
- Pred vykonaním hodnôt pre každú akciu klepnite na príčinu GC.
- Teraz na príkazovom riadku spustite príkaz - adb shell dumpsys meminfo a stlačte kláves enter.
- Hodnoty sa zobrazia na príkazovom riadku.
- Celkové hodnoty PSS, native, dalvik, heap size, heap free, heap-allocated sú hodnoty, ktoré vývojárom pomôžu ladiť zlyhania pamäte.
- Vývojárovi bude práca ľahšia vďaka lepšej reprezentácii údajov.
- Údaje by mali byť podobné:
- Hodnota objektov po kliknutí na príčinu GC.
- PSS spolu
- Natívna halda - veľkosť haldy
- Dalvik halda - veľkosť haldy
- Celková veľkosť haldy
- Natívna halda - halda alokácia
- Halda Dalvik - halda hal
- Spolu halda alo
- Natívna halda - halda zadarmo
- Halda Dalvik - halda zadarmo
- Halda celkom zadarmo
- Objekty (po kliknutí na príčinu GC z DDMS)
- % použitých% zadarmo
Ideálne testovanie: Pre lepšiu analýzu aplikácií skúste vykonať rôzne scenáre tak, že ponecháte aplikáciu na pozadí, a po pristátí na tej istej stránke vykonajte kompletný tok týchto bežne používaných scenárov.
Skúste použiť zariadenia nižšej triedy, pretože najčastejšie zlyhanie sa pozoruje z dôvodu pamäte, ktorá je výnimkou z pamäte (OOM).
Obrazovka DDMS
Ukážky dalvických hodnôt
Záver
Tento článok možno použiť na testovanie analýzy haldy pomocou nástroja DDMS. Správne hodnoty parametrov pomôžu vývojárom systému Android optimalizovať pamäť.
Znalosti o testovacích nástrojoch sú dobré, ale efektívne využitie týchto nástrojov sa považuje za čl.
Šťastné učenie !!
Odporúčané čítanie
- Výukový program Appium na testovanie mobilných aplikácií pre Android a iOS
- Najlepšie 20+ nástroje na zisťovanie úniku pamäte pre Java, C ++ v systémoch Linux a Windows
- Ako automatizovať aplikácie pre Android pomocou nástroja TestComplete
- Začíname s Robotium - najobľúbenejší nástroj na testovanie používateľského rozhrania aplikácií pre Android
- 10 najlepších aplikácií na správu projektov v roku 2021 pre zariadenia Android a iOS
- Výukový program pre testovanie mobilného používateľského rozhrania (testovanie grafického používateľského rozhrania pre aplikácie pre iOS a Android)
- Vytvorte testy Appium pre aplikáciu pre Android
- 10 NAJLEPŠÍCH aplikácií na sledovanie času pre nezávislých pracovníkov (2021 SELECTIVE)