2014-09-14 14 views
6

Ho osservato l'utilizzo della memoria per un'app per Android xamarin che ho creato e sembrava piuttosto elevato rispetto ad altre app Android native in esecuzione su vari dispositivi (circa 70 Mb dopo l'esecuzione per un po ') . Ho iniziato alcune indagini su questo, inizialmente confrontando l'utilizzo della memoria della mia app con altre app per android di xamarin. Ho esaminato alcune delle app di esempio come "Dipendenti" (disponibili nella prima pagina dello studio xamarin o nel sito xamarin).Utilizzo memoria Xamarin per applicazioni Android

Ho notato che quando questa app (e la mia app) inizia a utilizzare in modo costante circa 25-30 Mb di RAM, questo si verifica anche se non carico un layout nell'attività di avvio principale. È previsto? Questo sembra piuttosto alto in quanto molte altre app in esecuzione su dispositivi Android potrebbero essere alte solo dopo essere state eseguite per alcuni giorni? Se è così, allora dovrò fare del mio meglio per rendere il resto dell'app più efficiente possibile, ma volevo chiarire se questa osservazione è stata fatta da altri?

Nel frattempo sto osservando il suggerimento del sito per sviluppatori Android di ridurre al minimo l'utilizzo della memoria (durata del contesto e gerarchia di layout, ecc.) Per fare il possibile per ridurre il resto dell'utilizzo della memoria.

Dopo aver utilizzato alcuni degli strumenti standard (MAT è il punto di partenza principale) ho faticato a determinare esattamente cosa sta utilizzando questa memoria.

Quindi le mie domande sono: Si tratta di una quantità tipica di memoria per un'applicazione Xamarin Android ad essere consumare quando la prima attività viene caricato (anche prima di layout sono caricati) e quali sono gli strumenti migliori Xamarin compatibili per determinare la quantità di memoria ogni processo sta usando.

+0

Stai utilizzando Xamarin Insights? http://stackoverflow.com/a/31423043/2851619 – baraka

+0

qualche miglioramento su questo? Hai trovato la tua risposta? –

risposta

3

Questa discussione sulla mailing list potrebbe essere interessante: http://mono-for-android.1047100.n5.nabble.com/RAM-Usage-of-applications-written-with-monodroid-td5711289.html (è del 2012, quindi è probabile che ci siano stati miglioramenti da allora).

Alcuni punti chiave:

Mi interessa l'utilizzo della RAM di applicazioni. Abbiamo scritto un'applicazione con monodroid, che utilizza la realtà aumentata, e il suo utilizzo è in genere 50MB-60MB.

Si noti che i numeri adb shell ps sono notoriamente fuorvianti [...]. Per determinare la dimensione heap Mono GC, è necessario utilizzare GC.GetTotalMemory()

Si potrebbe anche voler dare un'occhiata a Memory and Performance Best Practices ei Garbage Collection articoli in documenti di Xamarin.

+0

Grazie per il tuo post. Il thread della mailing list era interessante, anche se purtroppo il post di jonp su Xamarin sembrava confermare che questa dimensione era "standard" anche per un'app Hello World, anche se le sue indagini non potevano confermare esattamente cosa stesse usando questa memoria. –