¿Cómo liberar la memoria del objeto Activity real después de dejar la actividad?

Estoy recibiendo un OutofMemoryError para mi aplicación Android, y estoy un poco confundido en cuanto a lo que está pasando. Básicamente lo que pasa es, puedo ejecutarlo las primeras veces, pero cuando trato de salir de él y luego abrir de nuevo de forma rápida y repetitiva, me sale un error de memoria.

He intentado investigar este tema, y ​​he encontrado que el método recycle () ha sido comúnmente el problema. Sin embargo, he llamado el método de reciclado en cada uno de los mapas de bits (que se almacenan en un contenedor de objetos, almacenados en un arraylist), pero todavía estaba recibiendo el problema.

Después de hacer esto, traté de usar el analizador de memoria Eclipse para mirar los vertederos de montón, cuando me encontré con algo extraño. Después de abandonar la actividad (volver a la actividad del lanzador, y luego abrir la actividad de nuevo a través de un botón, tomé capturas de pantalla del volcado de montón con el analizador de memoria. Actividad, se estaba creando otra instancia del objeto de actividad, y los antiguos no estaban siendo liberados, aunque se estaba llamando el método onDestroy () que también tenía el código de reciclado / limpieza.

A continuación, intentó reemplazar el método finalize para ver si se estaba llamando cuando la actividad salir de nuevo en la actividad de lanzador, pero no se estaba llamando. He leído en otros hilos de stackoverflow que finalize () no siempre se llama, por lo que al final, todavía no estoy seguro de lo que está pasando.

En última instancia, mi pregunta es la siguiente: ¿Cómo se supone que debo asegurar que el objeto Actividad (el objeto de actividad en sí, no el material creado de la actividad) se suelte después de abandonar la actividad en otra actividad?

Suena como su aplicación sufre de pérdidas de memoria, te recomiendo que sigas los siguientes enlaces:
Cómo evitar fugas de memoria

Gestión de memoria para aplicaciones de Android

Una opción es establecer el modo de inicio en singleInstance o singleTask en el archivo de manifiesto. Esto asegurará que no se crea otra instancia de la actividad.

Ejemplo de documentación

Una forma de liberar su objeto de actividad es llamarlo método onDestoy (). Tome un objeto de su actividad que lo haga público estático y haga que sea nulo en onDestroy ()

Public static Your_activity obj; 

Y luego en onCreate método initalize obj por esto

 obj=this; 

Y en onDestroy () método hacer esto:

 obj= null; 
  • Android Eclipse DDMS> Heap> Causa gris de GC
  • Android - recuperarse de una condición de memoria baja
  • Merory Leak; Los objetos no tienen raíz de GC
  • ¿Cómo averiguar la huella de memoria de mi aplicación para Android?
  • Obtenga el tamaño de RAM total que utiliza Aplicación en Android
  • Escaneo y edición de valores de memoria de aplicación de Android mediante programación
  • Android java.lang.OutOfMemoryError?
  • Android contrapartida de la advertencia de memoria iOS
  • No se puede asignar suficiente memoria en JNI
  • Proceso de fondo de caché de Android está aumentando continuamente
  • Filtro de mercado para clase de memoria
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.