Tengo una memoria caché de imagen en mi aplicación que se implementa mediante SoftReferences. Dalvik inicia aplicaciones con un montón relativamente pequeño, y luego lo aumenta en caso de demanda. Pero me gustaría que mi tamaño sea más grande desde el principio. Esto se debe a que cuando ya tengo algunas imágenes en la memoria caché y comienza una actividad (por ejemplo) u otra demanda máxima de memoria ocurre, mi caché se purga para permitir la memoria para esa demanda máxima. Como resultado, después de que se acabe el pico, aún tengo 2-3 MB de espacio libre pero mi caché está vacía.Android: ¿cómo aumentar el tamaño del montón en tiempo de ejecución?
La solución que veo para este problema es preasignar un golpe de derecha más grande así que incluso con el pico de consumo de 2-3 MB todavía tiene espacio para que mis SoftReferences no se purguen.
Encontré que VMRuntime.getRuntime().setMinimumHeapSize(BIGGER_SIZE)
sería útil. En particular, Google usa eso en sus aplicaciones, como se menciona here. Sin embargo, la clase VMRuntime está marcada como obsoleta y se dice que se eliminará de la API pública en una versión futura. Entonces setMinimumHeapSize
no es una solución permanente.
¿Cómo haré que Dalvik crezca en el arranque?
Actualmente utilizo una técnica realmente directa y cursi con solo asignar una gran matriz y soltarla. Esto hace que Dalvik crezca como yo quiera. Sin embargo, estoy seguro de que debe haber una forma más elegante de hacerlo. ¿Podrías decirme eso, por favor?
dudo encontrará una manera de hacer esto utilizando las API públicas – Falmarri
mapas de Google utiliza la reflexión y esta API, me encontré con este post mientras buscaba información sobre la llamada :) – sherpya