Asignación externa demasiado grande para este proceso en Android
Estoy recibiendo errores de " asignación externa demasiado grande para este proceso " en mi aplicación. Muchos de estos a la vez:
11-16 10:56:59.230: ERROR/dalvikvm-heap(2875): 1303680-byte external allocation too large for this process. 11-16 10:56:59.230: ERROR/GraphicsJNI(2875): VM won't let us allocate 1303680 bytes 11-16 10:56:59.230: ERROR/dalvikvm-heap(2875): 1536000-byte external allocation too large for this process. 11-16 10:56:59.230: ERROR/GraphicsJNI(2875): VM won't let us allocate 1536000 bytes
Parece que se producen mientras se está procesando el diseño, después de cargar grandes mapas de bits. Los errores, sin embargo, no se producen mientras se está decodificando el mapa de bits.
- Localización y solución de la causa del tamaño del montón grande
- ¿Cómo Android OS calcula el uso de memoria de una aplicación?
- ¿Por qué mi aplicación Android asigna cantidades sustancialmente diferentes de memoria en diferentes versiones del sistema operativo?
- ¿Cuánta memoria debe usar una aplicación típica de Android?
- ¿Hay un tamaño de montón mínimo para las versiones de Android?
¿Cómo puedo depurar estos errores? ¿Algún puntero adicional?
- Android no libera Bitmap de la memoria
- Aplicación para Android que toma mucha memoria
- Gestión de la memoria de Android: Densidad de pantalla, tamaños de imagen solicitados y montón disponible
- Determinación de la memoria disponible en Android
- Convertir un entero en una cadena sin asignar memoria
- Java mmap falla en Android con "mmap failed: ENOMEM (Fuera de memoria)"
- Truco de usar largeHeap en Androids más viejo <3?
- Ventaja dibujable sobre mapa de bits para la memoria en android
El comentario de adamp fue la respuesta en mi caso particular:
El marco suele capturar vistas en pantalla en mapas de bits temporales para obtener rendimiento. Parece que su aplicación está empujando a la derecha contra su límite de memoria ya y esto lo supera. Echa un vistazo a las otras sugerencias para limitar el uso de memoria de tu aplicación.
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.
- Android: cambia el color de fondo de un ClickableSpan cuando se hace clic
- JaCoCo no trabaja con pruebas Robolectric