Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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)?

  • Ventaja dibujable sobre mapa de bits para la memoria en android
  • ¿Cuánta memoria debe usar una aplicación típica de Android?
  • Gestión de la memoria de Android: Densidad de pantalla, tamaños de imagen solicitados y montón disponible
  • ¿Es Dalvik aún más hambriento de memoria que HotSpot en términos de tamaños de objeto?
  • ¿Cómo puedo determinar si mi aplicación Android tiene pérdida de memoria?
  • Diferencia entre malloc y dlmalloc
  • Desempaquetar o "liberar" un MappedByteBuffer bajo Android
  • Localización y solución de la causa del tamaño del montón grande
  • 4 Solutions collect form web for “Asignación de memoria de Android”

    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.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.