Asignación de memoria de Android

Estoy obteniendo un error de "tamaño de mapa de bits supera el presupuesto de VM". He leído que hay un límite de memoria de 16 MB. En este hilo Romain Guy dice que "solo puedes asignar 16 MB de memoria para toda tu aplicación".

Sin embargo, mi aplicación debe estar agotando la memoria mucho antes de que llegue a ese límite. Así que mi pregunta es: ¿cómo puedo asignar memoria a mi aplicación … ¿cómo puedo obtener la asignación a mi aplicación aumentó (dentro de los 16 MB máximo)?

Como con cualquier máquina virtual Java, la memoria heap crecerá automáticamente hasta el tamaño máximo. Pero, los mapas de bits se asignan fuera de la máquina virtual, por lo que no "ver" fácilmente en las estadísticas. Lo mejor que puede hacer es asegurarse de que no utilice mapas de bits grandes o que los reduzca usando
http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html

Desde Eclipse puedes generar un volcado de montón cuando estés en Android 1.6 o superior y puedes analizar el volcado con Eclipse MAT.

En general, no puede controlar el tamaño máximo del montón en un dispositivo real, a menos que esté trabajando con hardware o firmware personalizado.

Debería haber un artículo en developer.android.com sobre el dumping de la pila en 1.6, pero no puedo encontrarlo. 🙁

Editar
También, tengo que mencionar que usted puede pedir más memoria para aplicaciones usando

Android: largeHeap = "true"

En el manifiesto. Pero esto es muy mal-adviced como la mayoría de las aplicaciones no necesitan esto.

Tenga en cuenta que el límite de montón es dependiente del dispositivo. En un Droid o Nexus One, ese límite es de 24 MB (para acomodar los recursos gráficos más grandes).

Si utiliza subprocesos, el depurador podría ser el origen del problema. Si ejecuta la aplicación en el depurador, todos los subprocesos creados seguirán siendo conservados por el depurador, incluso cuando terminen de ejecutarse. Esto conduce a errores de memoria que no se producirán cuando la aplicación se ejecuta sin el depurador.

http://code.google.com/p/android/issues/detail?id=7979

https://android.googlesource.com/platform/dalvik/+/master/docs/debugger.html

He encontrado la respuesta a su pregunta recientemente.

Vaya al Directorio SDK de Android y
Ejecutar sdk manager (Herramientas-> android ejecutar este archivo)

En SDK manager vaya a Herramientas -> Administrar AVDs

Ahora, el cuadro de diálogo Administrador de dispositivos virtuales de Android está abierto.

En esa ventana seleccione su AVD y haga clic en Editar

Ahora en la sección de tarjeta SD, seleccione TAMAÑO y establezca 1024 MiB en la sección Hardware, haga clic en Nuevo y seleccione la propiedad "Máximo tamaño de montón de aplicación de VM" Ahora configure 100 (según el requisito de su aplicación) Finalmente haga clic en "Editar AVD"

Después de editar haga clic en el botón de actualización en sdk Manager

Ahora ejecute su aplicación en AVD su problema se resuelve.

  • Localización y solución de la causa del tamaño del montón grande
  • Fuera de error de memoria que se ocupa de mapas de bits grandes y el ciclo de vida de actividad de Android
  • ¿Los procesos de VM de Dalvik liberan la RAM del sistema?
  • ¿Llamando a finish () de una actividad liberará mi espacio de memoria?
  • Seguimiento de creación de objetos en Android DDMS, VM sin memoria
  • ¿OnDestroy () o finish () matan realmente la actividad?
  • Android OutOfMemoryException
  • ¿Hay un tamaño de montón mínimo para las versiones de Android?
  • ¿Por qué mi aplicación Android asigna cantidades sustancialmente diferentes de memoria en diferentes versiones del sistema operativo?
  • Cómo obtener el uso actual de memoria en android?
  • Gestión de la memoria de Android: Densidad de pantalla, tamaños de imagen solicitados y montón disponible
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.