vectorial una sirve que para mapa imagen hacer dibujo corel como java android bitmap out-of-memory recycle

java - una - El uso de memoria no disminuye incluso reciclo mapas de bits



que es un mapa de bits (1)

Tengo actividades A y B Cuando comienzo la actividad B de la actividad A, configuro la variable de mapa de bits estático en la actividad B. Muestro ese mapa de bits en la pantalla y lo giro.

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

@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(); }


Del desarrollador de Android

Libere el objeto nativo asociado con este mapa de bits y borre la referencia a los datos de píxeles. Esto no liberará los datos de píxel de forma síncrona; simplemente permite que se recolecte basura si no hay otras referencias . El mapa de bits está marcado como "muerto", lo que significa que emitirá una excepción si se llama a getPixels () o setPixels (), y no dibujará nada. Esta operación no se puede revertir, por lo que solo debe invocarse si está seguro de que no hay más usos para el mapa de bits. Esta es una llamada avanzada, y normalmente no necesita ser llamada, ya que el proceso GC normal liberará esta memoria cuando ya no haya más referencias a este mapa de bits.

reciclar solo asegura que su mapa de bits se reciclará siempre que se llame a GC. Lo mismo ocurre con System.gc, no se puede asegurar de que gc se ejecutará en este momento, simplemente le pedirá al gc que se ejecute, pero el GC solo se ejecutará cuando el sistema lo quiera ejecutar.

Así que relájate, si reciclas los mapas de bits, se reciclarán con el tiempo.