¿Cómo puedo detectar el uso del tamaño de almacenamiento dynamic de una aplicación de Android?

Me gustaría saber la cantidad de espacio dynamic utilizado por mi aplicación de Android de dos maneras: – programáticamente – a través de DDMS.

Me he referido a esta publicación, antes de publicarla aquí. En esa publicación, se menciona que, Debug.getNativeHeapSize() devuelve el formato heapsize. ¿Es este el método exacto que debo usar para detectar mediante progtwigción el tamaño del montón? De ser así, ¿dónde debería registrarlo para obtener el uso correcto de mi aplicación?

esto es lo que uso:

 public static void logHeap() { Double allocated = new Double(Debug.getNativeHeapAllocatedSize())/new Double((1048576)); Double available = new Double(Debug.getNativeHeapSize())/1048576.0; Double free = new Double(Debug.getNativeHeapFreeSize())/1048576.0; DecimalFormat df = new DecimalFormat(); df.setMaximumFractionDigits(2); df.setMinimumFractionDigits(2); Log.d("tag", "debug. ================================="); Log.d("tag", "debug.heap native: allocated " + df.format(allocated) + "MB of " + df.format(available) + "MB (" + df.format(free) + "MB free)"); Log.d("tag", "debug.memory: allocated: " + df.format(new Double(Runtime.getRuntime().totalMemory()/1048576)) + "MB of " + df.format(new Double(Runtime.getRuntime().maxMemory()/1048576))+ "MB (" + df.format(new Double(Runtime.getRuntime().freeMemory()/1048576)) +"MB free)"); } 

Sí. Tenga en cuenta que también hay vista de montón en DDMS y puede usar MAT Eclipse que es más que útil especialmente en el seguimiento de pérdidas de memoria PERO y esto es enorme, pero los números que ve son solo memoria de referencia que es administrada por VM. Hay muchos subsistemas en Android que se implementan por debajo de VM – nativo. El ejemplo más simple de la clase Bitmap. No verá toda la memoria asignada a un bitmap en DDMS y el recolector de basura no es muy bueno / rápido en la recuperación de esta memoria. así que ten cuidado.