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?
- Truco de usar largeHeap en Androids más viejo <3?
- Android: PSS (Proportional Set Size) Cálculo
- Gestión de la memoria de Android: Densidad de pantalla, tamaños de imagen solicitados y montón disponible
- Reciclaje de bitmaps
- ¿Los procesos de VM de Dalvik liberan la RAM del sistema?
- ¿Cuánta memoria debe usar una aplicación típica de Android?
- ¿Es correcta esta explicación sobre VSS / RSS / PSS / USS?
- Android no libera Bitmap de la memoria
- Foreground Service retiene objetos de memoria
- ¿Cómo Android OS calcula el uso de memoria de una aplicación?
- Aplicación para Android que toma mucha memoria
- ¿Por qué mi aplicación Android asigna cantidades sustancialmente diferentes de memoria en diferentes versiones del sistema operativo?
- ¿Es Dalvik aún más hambriento de memoria que HotSpot en términos de tamaños de objeto?
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.
- Dibuja un arco geográficamente preciso en un mapa para Android
- EditText setError está fuera de lugar en BottomSheetDialog