Gestión de la memoria android fuera del montón
Estoy trabajando en una aplicación para Android y ya que tenemos un montón de gráficos, se utiliza una gran cantidad de memoria.
Yo monitoreo el tamaño del montón de memoria y su alrededor de 3-4 Mb, y peeks de 5Mb cuando hago algo que requiere más memoria (y luego vuelve a 3). Esto no es una gran cosa, pero algunas otras cosas se maneja fuera de la memoria del montón, como la carga de drawables.
- Referencia débil para la llamada de red mala idea?
- ¿Cuál es la cantidad máxima de RAM que una aplicación puede usar?
- Fuga de memoria de Android EditText
- Android: La ventana del cursor está llena
- Pruebas de Android onTrimMemory
Por ejemplo, si ejecuto la herramienta ddms fuera de eclipse, e ir a sysinfo, veo que mi aplicación está tomando 20Mb en el Droid y 12 en el G1, pero el tamaño del montón es el mismo en ambos, porque los datos son los mismos, pero las imágenes son diferente.
Así que las preguntas son: ¿Cómo sé lo que está tomando la memoria fuera de la memoria de montón? ¿Qué otra cosa toma memoria fuera de la memoria del montón? Diseños complejos (árbol grande)? Animaciones?
Gracias
Daniel
- OnDraw eficiente con mapas de bits y aceleración por hardware
- Pérdida de memoria causada por el método initialize de YouTubePlayer.Provider
- Enorme byte en mi aplicación después de HPROF
- Lenta Cargando imágenes grandes con Picasso
- ¿Cómo utilizar los controladores?
- Uso de la memoria V8
- Límite de tamaño de Android montón, todavía tenemos necesidad de diseñar aplicaciones con un límite de 16 MB en mente?
- ¿Cuál es el resto del gráfico principal de Eclipse Memory Analyzer?
Los objetos de mapa de bits toman bastante memoria .
Ex. Si la aplicación descarga un jpg de 10KB de la red y utiliza BitmapFactory para decodificarlo en un mapa de bits que los objetos de mapa de bits necesitan alrededor de 30-100KB de memoria, dependiendo de la resolución de la imagen. 3bytes por cada píxel (1 byte para cada color)
Y sí, todo tipo de objeto utiliza la memoria, como LinearLayouts, ImageViews etc … Si está creando y destruyendo muchos de estos objetos, ej. A medida que se desplaza / página a través de sus imágenes, habrá fugas de memoria. El gc () no maneja los llamados objetos de corta duración tan rápido como nos gustaría.
* Mantenga el número de objetos de vista en un nivel estable **, y recíclelos en lugar de destruir y crear otros nuevos.
REf: http://developer.android.com/resources/articles/track-mem.html
Si su aplicación alcanza los 20 MB de memoria, puede que FC como BitmapFactory esté intentando decodificar la siguiente imagen.
Un candidato obvio es off course bitmaps fuera de pantalla (doble buffer por android?), Ya que el screensize tiene ~ 4x tantos píxeles en el droide.
- Actualizado a 2.3, ahora las compilaciones de hormigas no incluyen los tarros en mi directorio de librerías
- Problema al analizar JSON