Trabajo con varios objetos grandes y no sé cómo administrar las pérdidas de memoria. Rastreé el tamaño del montón de mi aplicación y no para de crecer (como la memoria asignada).Android Drawables pérdida de memoria
Es especialmente el tipo "byte array (byte [])" que crece y nunca disminuye. (en la vista del montón de DDMS en Eclipse)
Mi aplicación se compone de una actividad que utiliza fragmentos. Esos fragmentos muestran varias imágenes grandes. Traté de establecer la devolución de llamada arrastrables a nulo, establecí los drawables en nulos, borré mi caché volátil (que evita que mi aplicación haga demasiados IO de disco) cuando recupero un fragmento pero el montón nunca disminuye.
De hecho, cada vez que llamo: Drawable.createFromResourceStream (context.getResources(), value, new FileInputStream (f), f.getName(), opts); el montón crece. ¿Cómo puedo liberar memoria?
Gracias!
que hacen referencia al contexto de aplicación y no el contexto de actividad, cree que el problema es que mis fragmentos no se destruyen y se fuga? – abecker
Quizás, consulte el video en mi respuesta sobre cómo usar la herramienta de análisis de memoria SDK (MAT) para encontrar los objetos que se están filtrando –
¡Hola! ¡Resolví mi problema! De hecho, mis fragmentos se mantuvieron en la memoria y fue mi caché volátil estática lo que lo mantuvo. Realmente no sé por qué tiene este comportamiento. Instalé un DrawableManager, cuando creo un fragmento, que tiene varios métodos para recuperar Drawables del disco o de la red. Cuando entrega uno a mis puntos de vista, lo mantenía en un HashMap estático (para reutilizar este caché en los otros fragmentos). Solo hago que mi HashMap no sea estático (no puedo reutilizar el caché volátil entre los fragmentos). No sé por qué mi fragmento se mantuvo en la memoria. – abecker