2014-10-29 15 views

risposta

9

Perché vuoi questo ascoltatore. Se si vuole semplicemente sapere se la vostra applicazione è a corto di memoria basta controllare questo: memoria

di uscita come la memoria diventa stretto

Durante tutte le fasi del ciclo di vita della tua app, l'onTrimMemory() richiamata ti dice anche quando il la memoria complessiva del dispositivo si sta esaurendo. Si dovrebbe rispondere con il rilascio di ulteriori risorse in base ai seguenti livelli di memoria forniti da onTrimMemory():

  • TRIM_MEMORY_RUNNING_MODERATE tua applicazione è in esecuzione e non considerati killable, ma il dispositivo è in esecuzione basso sulla memoria e il sistema è attivamente uccidere processi nella cache della LRU.
  • TRIM_MEMORY_RUNNING_LOW L'app è in esecuzione e non è considerata utilizzabile, ma il dispositivo funziona in modo molto più basso sulla memoria, pertanto è necessario rilasciare le risorse inutilizzate per migliorare le prestazioni del sistema (che influisce direttamente sulle prestazioni dell'app).
  • TRIM_MEMORY_RUNNING_CRITICAL L'app è ancora in esecuzione, ma il sistema ha già ucciso la maggior parte dei processi nella cache della LRU, quindi è necessario rilasciare tutte le risorse non critiche ora. Se il sistema non può recuperare una quantità sufficiente di RAM, cancellerà tutta la cache della LRU e inizierà i processi di abbattimento che il sistema preferisce mantenere in vita, come quelli che ospitano un servizio in esecuzione. Inoltre, quando il processo di applicazione è attualmente memorizzato nella cache, si potrebbe essere visualizzato uno dei seguenti livelli dal onTrimMemory():

  • TRIM_MEMORY_BACKGROUND Il sistema sta esaurendo la memoria e il processo è vicino all'inizio della lista LRU. Sebbene il processo dell'app non sia ad alto rischio di essere ucciso, il sistema potrebbe già uccidere processi nella cache della LRU. È necessario rilasciare risorse facili da ripristinare, in modo che il processo rimanga nell'elenco e riprenda rapidamente quando l'utente torna alla propria app.

  • TRIM_MEMORY_MODERATE Il sistema sta esaurendo la memoria e il processo è quasi al centro dell'elenco LRU. Se il sistema diventa ulteriormente vincolato per la memoria, è possibile che il processo venga ucciso.
  • TRIM_MEMORY_COMPLETE Il sistema sta esaurendo la memoria e il processo è uno dei primi a essere eliminato se il sistema non recupera memoria ora. Dovresti rilasciare tutto ciò che non è fondamentale per riprendere il tuo stato dell'app. Poiché la richiamata onTrimMemory() è stata aggiunta al livello API 14, è possibile utilizzare la richiamata onLowMemory() come fallback per le versioni precedenti, che è approssimativamente equivalente all'evento TRIM_MEMORY_COMPLETE.

ecco il link di riferimento https://developer.android.com/training/articles/memory.html

3

Va bene, sarà diverso sia per Dalvik e l'arte ..

in pratica si può istruire adb shell per registrare gli eventi GC in un file di traccia ..

art: https://source.android.com/devices/tech/dalvik/gc-debug.html

Potrebbe anche essere gli stessi comandi ADB per arte e dalvik.

Lo strumento di monitoraggio della memoria si inserisce in questo quando viene visualizzato il grafico grafico della memoria per te in Android Studio.

Progammatically, probabilmente è harder..look a come FB ha fatto del loro utensili performance come credo che stanno facendo i conteggi degli eventi GC dal lato C++ nativo C/e fascicolazione in un flatbuffer per il loro lato java codice strumento di profiling per accedere ..

Problemi correlati