El uso de memoria no disminuye ni siquiera reciclo bitmaps

Tengo A y B actividades. Cuando inicie la actividad B de la actividad A, establezco una variable estática de mapa de bits en la actividad B. Muestro ese mapa de bits en la pantalla y lo giro.

Cuando la actividad B está terminada, reciclo todos los mapas de bits en método onDestroy (), pero el uso de memoria no está disminuyendo.

@Override protected void onDestroy() { super.onDestroy(); if (bitmap90 != null) { bitmap90.recycle(); bitmap90 = null; } if (bitmap180 != null) { bitmap180.recycle(); bitmap180 = null; } if (bitmap270 != null) { bitmap270.recycle(); bitmap270 = null; } if (mBitmap != null) { mBitmap.recycle(); mBitmap = null; } if (((BitmapDrawable) ivOriginal.getDrawable()).getBitmap() != null) { ((BitmapDrawable) ivOriginal.getDrawable()).getBitmap().recycle(); ivOriginal.setImageDrawable(null); } if (((BitmapDrawable) ivOriginal90.getDrawable()).getBitmap() != null) { ((BitmapDrawable) ivOriginal90.getDrawable()).getBitmap().recycle(); ivOriginal90.setImageDrawable(null); } System.gc(); } 

Desde Android Developer

Libere el objeto nativo asociado con este mapa de bits y desactive la referencia a los datos de píxeles. Esto no liberará los datos de píxeles de forma sincrónica; Simplemente permite que se recoja basura si no hay otras referencias . El mapa de bits está marcado como "muerto", lo que significa que lanzará una excepción si getPixels () o setPixels () se llama y no dibujará nada. Esta operación no se puede revertir, por lo que sólo se debe llamar si está seguro de que no hay otros usos para el mapa de bits. Esta es una llamada avanzada, y normalmente no es necesario que se llame, ya que el proceso GC normal liberará esta memoria cuando no hay más referencias a este mapa de bits.

Reciclar sólo se asegura de que su mapa de bits será reciclado cada vez GC se llama. Lo mismo ocurre con System.gc, no puede asegurarse de que gc se ejecute ahora mismo, sólo le pedirá al gc para ejecutar, pero GC sólo se ejecutará cuando el sistema quiere que se ejecute.

Tan apenas relaje, si usted está reciclando los mapas de bits que conseguirán reciclados apenas darle algún tiempo eventual.

  • Uso de la clase EffectFactory en mapa de bits - Android
  • Tamaño del mapa de bits devuelto por la cámara a través de la intención?
  • Android Native crash en /system/lib/libskia.so (procesamiento de mapas de bits)
  • ¿Cómo cambiar de forma programática el contraste de un mapa de bits en android?
  • Android: Cómo obtener el ancho de escala de bitmap en onDraw ()
  • Cómo combinar mapas de bits en android?
  • Crear Bitmap NullPointerException
  • Evitar excepciones de memoria en la aplicación de filtros a imágenes (Android)
  • llamada a Bitmap.compress no devuelve - y ninguna excepción
  • Cómo escalar mapas de bits en View.Canvas en Android?
  • Android - cómo evitar la memoria sobre la carga mediante mapas de bits?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.