Java.lang.outofmemoryerror android.graphics.BitmapFactory.nativeDecodeAsset (Método nativo)

Mientras que la configuración de la vista de contenido que tengo esta excepción. Ya he tratado de manejar esta excepción por:

try{ setContentView(R.layout.activity_main); }catch (OutOfMemoryError e) { e.printStackTrace(); } 

Esta excepción se produjo 5 de cada 100 veces durante la prueba. Pero no puedo resolver este problema. O de lo contrario mi equipo QA me matará en esto 🙁

Hay varias maneras de resolver este tipo de error. Por lo general, es porque la resolución de la imagen es demasiado alta en su diseño. Estas son sus opciones:

  1. Solicite una imagen de menor resolución (menos píxeles). Eso puede no ser aceptable, pero su equipo debe ser consciente de las restricciones de memoria.

  2. Quite las imágenes del diseño, pero deje los elementos ImageView , si los hay. Si es un fondo, quite el fondo. A continuación, utilice java para cargar las imágenes de manera eficiente. Tendrá que medir el tamaño de la pantalla y / o el tamaño de los elementos que desea que las imágenes antes de cargar. Los documentos Android tienen un gran ejemplo aquí:

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

  1. Aumente el "heapSize" para su aplicación. Este es un último complejo! De lo contrario, es probable que se ejecuta en el mismo error en el futuro y luego tiene que resolverlo utilizando uno de los métodos anteriores … y su QA realmente no le gustará entonces! Aquí hay una referencia en heapSize :

¿Cómo aumentar el tamaño de montón de una aplicación de Android?

También es posible que esté haciendo referencia a imágenes en otra pantalla o que de lo contrario tenga una pérdida de memoria, en cuyo caso debe revisar cualquier código que se llame antes de esto (incluyendo otras actividades) para encontrar dónde están esas filtraciones. Las causas probables son cosas como pasar una Activity a un hilo o servicio de fondo en lugar de pasarlo sólo a Contexto, crear referencias estáticas a imágenes, no utilizar WeakReference para manejar objetos de memoria grandes pasados ​​a otros procesos o subprocesos inusuales a referencias a objetos .

Como se ha mencionado por otros esto está sucediendo porque la aplicación está teniendo pérdida de memoria o su aplicación está usando demasiada memoria.

Trate de reducir el número de capas en su archivo de diseño en primer lugar, esto probablemente resolvería el problema. En caso de que esto no instale el plugin MAT, con esto puedes comprobar la cantidad de memoria que está siendo utilizada por tu aplicación en tiempo de ejecución. Puede haber una posibilidad de que una actividad anterior se haya abierto antes de que su actividad no esté liberando memoria o las vistas no se estén reciclando correctamente en la lista / cuadrícula

PS: Reduzca el número de capas en su archivo de disposición que funcionaría más probablemente

El código proporcionado no es necesariamente la causa de OutOfMemoryError. La causa principal de OutOfMemory es que JVM GC no puede liberar suficiente memoria para que su operación continúe.

Suponiendo que setContentView es de hecho una operación pesada, y el tamaño de resolución decreciente de la imagen, lo resolvería por un tiempo, este problema volvería a aparecer en un lugar diferente en el sistema, en un tiempo diferente.

Usted puede google las razones por las que GC no puede asignar suficiente espacio, por lo general significa que tiene alguna referencia obsoleta en su código, que usted necesita para limpiar, a fin de ayudar a su GC.

Sugeriría usar un profiler para su uso, para seguir cómo el espacio se asigna y se despeja en su uso. Tienes un estándar por defecto con android.

  • OutOfMemoryError en BitmapFactory.decodeFile ()
  • OutOfMemoryError: el tamaño de mapa de bits supera el presupuesto de VM: - Android
  • El tamaño del mapa de bits supera el error de presupuesto de Vm android
  • BitmapFactory.decodeStream falta de memoria a pesar de usar tamaño de muestra reducido
  • Android - Excepción de memoria
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.