Monitor de memoria en Android Studio informa del uso de RAM diferente del dispositivo

Al investigar el uso de RAM en una aplicación en la que estoy trabajando, he estado utilizando la herramienta Monitor de memoria en Android Studio (se puede acceder a Android Studio accediendo a Herramientas> Android> Monitor de memoria). He notado el uso de RAM de mi aplicación que se informa en el Monitor de memoria, siempre es mucho menor que cuando se ve el uso de memoria RAM desde el dispositivo (se puede acceder a Configuración> Aplicaciones> Ejecución). Como se puede ver en las capturas de pantalla a continuación, Monitor de memoria está informando acerca de 18 MB de uso de RAM (23 MB si se incluye espacio libre), pero el dispositivo está reportando 43 MB.

¿Por qué la diferencia y también es una más precisa que la otra?

Monitor de memoria

dispositivo

Sospecho que la herramienta monitor de memoria está hablando con la máquina virtual dalvik acerca de las asignaciones heap hechas por el código Java, y el administrador del dispositivo está mostrando lo que todo el proceso está usando para la memoria. Por lo tanto, la primera no incluye la sobrecarga o la memoria utilizada por la propia máquina virtual (o su texto y bibliotecas), o cualquier asignación fuera de la pila (a veces el código nativo puede asignar memoria que no está directamente visible para la máquina virtual).

Consulte https://developer.android.com/tools/debugging/debugging-memory.html#ViewingAllocations e intente ejecutar el comando:

 adb shell dumpsys meminfo <package_name> 

Para obtener una desglose más precisa del uso de la memoria en tiempo de ejecución de su aplicación.

He probado el Monitor de la Memoria de Android Allocated puede ser obtener de esta manera mediante programación:

long allocatedMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

Pero esto sólo funciona para obtener información de la aplicación actual.

  • ¿Cómo puedo determinar si mi aplicación Android tiene pérdida de memoria?
  • Java mmap falla en Android con "mmap failed: ENOMEM (Fuera de memoria)"
  • Android OutOfMemoryException
  • ¿Cómo puedo depurar el consumo de memoria RAM de mi aplicación Android en tiempo de ejecución?
  • Android: obtener memoria asignada
  • Desempaquetar o "liberar" un MappedByteBuffer bajo Android
  • Asignación externa demasiado grande para este proceso en Android
  • Cómo obtener el uso actual de memoria en android?
  • ¿Hay un tamaño de montón mínimo para las versiones de Android?
  • Asignación de memoria de Android
  • Fuera de error de memoria que se ocupa de mapas de bits grandes y el ciclo de vida de actividad de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.