how fix memory leak android apps using ddms tool
Come testare e correggere la perdita di memoria per le applicazioni Android:
L'ottimizzazione della memoria è una sfida più grande per qualsiasi sviluppatore prima di inviare un'app al Play Store.
elenco di collegamenti in c ++
Le prestazioni di un'app sono altrettanto importanti della sua funzionalità. Questo articolo è basato su Analisi dell'heap di un'applicazione tramite DDMS (Dalvik Debug Monitor Service).
La maggior parte delle applicazioni Android viene eseguita su JAVA e presenta anche problemi di threading.
Nota importante - Lo strumento Dalvik Debug Monitor Server (DDMS) è disponibile solo in Android Studio 3.0 e versioni precedenti. Se utilizzi Studio 3.0 e versioni successive, assicurati di utilizzare Android Profiler per profilare la CPU, la memoria e l'utilizzo della rete dell'app.
Questo tutorial ti aiuterà a comprendere e ottimizzare la perdita di memoria per un'applicazione Android utilizzando lo strumento DDMS. L'analisi della memoria darà un'idea della memoria e l'ottimizzazione dei valori della memoria comporterà quindi una minore perdita di memoria.
Cosa imparerai:
- Termini comunemente usati
- DDMS (Dalvik Debug Monitor Server)
- Passaggi per avviare DDMS tramite ADT
- Passaggi per avviare DDMS tramite Android Studio
- Conclusione
- Lettura consigliata
Termini comunemente usati
Di seguito sono elencati alcuni dei termini comuni che utilizzeremo in questo progetto:
- Mucchio - È la memoria di runtime che è disponibile per l'allocazione e viene distribuita dinamicamente. Dipende dalla piattaforma.
- Dalvik heap - Dalvik heap è una combinazione di classi e dati di zygote.
- Zigote - Zygote aiuta ad avviare i processi delle app quando il sistema viene caricato.
- PSS - È il conteggio delle pagine all'interno della memoria per un processo e viene misurato in KB.
- Raccolta dei rifiuti - La Garbage Collection sta rintracciando tutti gli oggetti che sono ancora utilizzati e contrassegna il resto come Garbage.
DDMS (Dalvik Debug Monitor Server)
Questo è lo strumento che aiuta ad analizzare il monitoraggio delle prestazioni di runtime. Aiuta anche nella profilazione e messa a punto delle applicazioni.
Servizi principali offerti da DDMS
- Statistiche totali allocazioni oggetti Heap
- Statica del thread dell'app
- Acquisizione dello schermo del dispositivo
- Esplora file dispositivo
- Chiamata in arrivo e ispezione SMS
- Ispezione dei dati di posizione
- Console statica di rete
- Logcat (dettagliato, debug, asserzione, errore)
Perdita di memoria:
Un'applicazione mantiene un oggetto per molto tempo anche dopo aver servito allo scopo e questo oggetto non viene raccolto da GC.
Rilevamento di perdite di memoria:
In generale, l'applicazione Android mostra un popup di dialogo per un'app che non risponde o nel peggiore dei casi un'eccezione di memoria esaurita. Ogni dispositivo ha una dimensione heap limitata e quando un'applicazione tenta di aggiungere memoria, vengono osservate eccezioni.
Per controllare la dimensione totale dell'heap di un dispositivo Android, possiamo utilizzare i seguenti comandi:
- cat / proc / meminfo | grep MemTotal
- adb –d pull /system/build.prop
Passaggi per avviare DDMS tramite ADT
Passo 1: Avvia il pacchetto adt (facilmente disponibile Qui ) Oppure installa il pacchetto ADT per la configurazione di Windows utilizzando i collegamenti seguenti.
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
Passo 2: Fare clic su SDK
Passaggio 3: Fare clic su strumenti
Passaggio 4: Fare clic su monitor.bat (DDMS)
Nota: Per l'analisi dell'heap, è necessario l'apk di debug.
Dopo aver installato con successo il bundle ADT, vai al prompt dei comandi (set path, se adb non viene riconosciuto come comando interno o esterno).
Verificare il dispositivo connesso a un sistema tramite il comando adb (dispositivi adb). Una volta che un dispositivo è connesso, viene connesso alla schermata DDMS con il nome del pacchetto di un'applicazione.
Passaggi per avviare DDMS tramite Android Studio
Studio -> Strumenti -> Android -> Monitor del dispositivo Android -> Fare clic sul pulsante DDMS dal menu.
Passaggi per l'analisi di un mucchio
- Seleziona il nome del pacchetto di un'app che appare nella schermata DDMS.
- Seleziona l'icona dell'heap di aggiornamento.
- Tocca Causa GC prima di prendere valori per ogni azione.
- Ora sul prompt dei comandi esegui il comando - adb shell dumpsys meminfo e premi invio.
- I valori verranno visualizzati sul prompt dei comandi.
- Totale PSS, nativo, dalvik, dimensione heap, heap libero, heap-allocato sono i valori che consentiranno agli sviluppatori di eseguire il debug degli arresti di memoria.
- Una migliore rappresentazione dei dati renderà il lavoro facile per uno sviluppatore.
- I dati dovrebbero essere come:
- Valore degli oggetti dopo aver fatto clic su causa GC.
- Totale PSS
- Dimensione heap nativa
- Dalvik heap- dimensione del mucchio
- Dimensione totale dell'heap
- Allocazione heap heap nativa
- Dalvik heap- heap alloc
- Totale allocazione heap
- Heap nativo gratuito
- Dalvik senza mucchio
- Totale di heap gratuito
- Oggetti (dopo aver fatto clic su causa GC da DDMS)
- % utilizzato% gratuito
Test ideale: Per una migliore analisi delle app, prova a eseguire diversi scenari mantenendo un'app in background e, atterrando sulla stessa pagina, esegui un flusso completo di questi scenari di uso comune.
Prova a utilizzare dispositivi di fascia bassa, poiché l'arresto anomalo più comune si verifica a causa della memoria che è l'eccezione Out Of Memory (OOM).
Schermata DDMS
Esempi di valori Dalvik
Conclusione
Questo articolo può essere utilizzato per testare l'analisi dell'heap utilizzando lo strumento DDMS. Valori corretti per i parametri aiuteranno gli sviluppatori Android a ottimizzare la memoria.
La conoscenza degli strumenti di test è buona, ma l'utilizzo di tali strumenti in modo efficiente è considerato un'arte.
Buon apprendimento !!
Lettura consigliata
- Tutorial Appium per testare app mobili Android e iOS
- Top 20+ strumenti di rilevamento perdite di memoria per Java, C ++ su Linux e Windows
- Come automatizzare le applicazioni Android utilizzando lo strumento TestComplete
- Guida introduttiva a Robotium: lo strumento di test dell'interfaccia utente dell'applicazione Android più popolare
- 10 migliori app per la gestione dei progetti nel 2021 per dispositivi Android e iOS
- Esercitazione sul test dell'interfaccia utente mobile (test della GUI di app iOS e Android)
- Crea test Appium per un'app Android
- 10 MIGLIORI app per il monitoraggio del tempo per liberi professionisti [SELETTIVO 2021]