2012-03-07 7 views
5

Ho un'applicazione Android molto semplice composta da una singola attività con alcune caselle di testo e un po 'di codice di elaborazione.Perché la mia app per Android assegna quantità di memoria sostanzialmente diverse su diverse versioni del sistema operativo?

Quando lo installo su un dispositivo 2.3 e lo apro per la prima volta, assegna circa 2,7 MB di memoria (in base alla scheda Aggiornamento heap in Eclipse DDMS).

Su un dispositivo 3.1, assegna ~ 6,1 MB.

Su un dispositivo 4.0, assegna ~ 13,8 MB.

Non ho apportato modifiche al codice tra il 3 e queste misure sono state prese dopo l'installazione/apertura iniziale dell'applicazione (quindi non ha avuto il tempo di fare alcuna perdita). Non usa immagini e in particolare non ha abilitato l'accelerazione hardware.

Qualcuno sa perché le impronte potrebbero differire così tanto? Presumo che abbia a che fare con le differenze nelle versioni del sistema operativo, ma mi chiedo se qualcuno sappia quali potrebbero essere queste differenze.

Ho letto del cambiamento nell'assegnazione di Bitmap dalla 3.0 in poi causando evidenti aumenti nella memoria allocata, ma la mia applicazione non utilizza alcuna immagine. Consiste solo di alcuni campi EditText e TextViews.

+0

È possibile utilizzare l'Analizzatore di memoria per ottenere dettagli e confrontare le allocazioni? – Asahi

risposta

1

Le bitmap pre-Honeycom sono state allocate nell'heap nativo. Da Android 3.0 (incluso ICS), i dati dei pixel per le bitmap sono allocati nell'heap Dalvik. La differenza tra 2.3 e 3.1 potrebbe essere a causa di questo.

ICS utilizza effettivamente la memoria di 3.1 e non ne conosco il motivo.

+0

Ho letto delle immagini bitmap, ma la mia applicazione non usa affatto immagini. Ha solo alcuni campi TextView e EditText. Anche se immagino che quelli potrebbero essere renderizzati usando bitmap interni al sistema operativo? Ancora questo non spiega il salto da 3.1 a 4.0. – mWillis

Problemi correlati