Android: cómo comprobar la cantidad de memoria que queda?

A continuación se muestra mi fórmula para comprobar la cantidad de memoria que queda (no la cantidad de memoria que queda en el montón actual, pero cuánto más memoria se puede utilizar antes de la aplicación se bloquea). No estoy seguro de que esto es correcto, ¿verdad?

double max = Runtime.getRuntime().maxMemory(); //the maximum memory the app can use double heapSize = Runtime.getRuntime().totalMemory(); //current heap size double heapRemaining = Runtime.getRuntime().freeMemory(); //amount available in heap double nativeUsage = Debug.getNativeHeapAllocatedSize(); //is this right? I only want to account for native memory that my app is being "charged" for. Is this the proper way to account for that? //heapSize - heapRemaining = heapUsed + nativeUsage = totalUsage double remaining = max - (heapSize - heapRemaininng + nativeUsage); 

Pruebe el siguiente código. Que debe darle los resultados que está después (especialmente el campo de Pss). Puedes leer más sobre esto aquí

 Debug.MemoryInfo memoryInfo = new Debug.MemoryInfo(); Debug.getMemoryInfo(memoryInfo); String memMessage = String.format( "Memory: Pss=%.2f MB, Private=%.2f MB, Shared=%.2f MB", memoryInfo.getTotalPss() / 1024.0, memoryInfo.getTotalPrivateDirty() / 1024.0, memoryInfo.getTotalSharedDirty() / 1024.0); 

Este es un hilo antiguo, pero esto parece funcionar:

  Runtime.getRuntime().gc(); long memoryAvailable = (Runtime.getRuntime().maxMemory() - Runtime.getRuntime().totalMemory() + Runtime.getRuntime().freeMemory()); 

totalMemory-freeMemory es la memoria utilizada actualmente.

Así que esto se reduce a:

(maximum possible memory)-(current used memory)

Editar para agregar: freeMemory no cuenta memoria disponible para la recolección de basura, por lo que puede intentar Runtime.getRuntime (). Gc (), aunque se dan cuenta de que puede tener sus propias consecuencias (como hipo visual si se ejecuta en el hilo UI).

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.