Como representación de la presión de memoria de un proceso, 'anonymous RSS + swap' es una métrica fundamental para mantener la estabilidad del juego. Sirve como umbral de límite de memoria para el Limitador de memoria (Android 17 y versiones posteriores) y como parámetro de referencia estándar para las estadísticas vitales de memoria en Google Play Console.
Es difícil medir el uso de memoria que coincide exactamente con "anonymous RSS + swap" en tiempo de ejecución o de forma estática dentro de Unreal Engine.
Para hacer un seguimiento del uso de memoria, Unreal Engine proporciona la VmRSS + VmSwap
métrica. Aunque es más amplia que "anonymous RSS + swap" porque VmRSS incluye rssFile y rssShmem, sigue siendo una estimación confiable.
Sigue esta guía para analizar el espacio en memoria de tu juego:
- Consulta la memoria con las APIs de C++
- Supervisa la memoria con comandos de la consola
- Visualiza la memoria con Unreal Insights
- Verifica el uso preciso de la memoria con Perfetto
Consulta la memoria con las APIs de C++
Usa las siguientes APIs de C++ para consultar las métricas de memoria:
Consulta de memoria ligera
Usa GetMemoryUsedFast para realizar una consulta de memoria ligera. En Android, este método muestra la huella estimada analizando solo los campos de memoria necesarios de /proc/self/status, en lugar de leer el archivo completo.
Estadísticas detalladas de la memoria
Usa GetStats para consultar estadísticas detalladas de la memoria de la plataforma. Este método proporciona estadísticas completas de la memoria de la plataforma y muestra FPlatformMemoryStats.UsedPhysical y FPlatformMemoryStats.RssFile. Como UsedPhysical es la suma de VmRSS y VmSwap, puedes acercarte al valor de referencia si le restas RssFile.
#include "HAL/PlatformMemory.h"
uint64 GetEstimatedPhysicalMemory()
{
FPlatformMemoryStats Stats = FPlatformMemory::GetStats();
#if PLATFORM_ANDROID
return Stats.UsedPhysical - Stats.RssFile;
#else
return Stats.UsedPhysical;
#endif
}
Supervisa la memoria con comandos de la consola
Usa este enfoque para supervisar las tendencias de memoria mientras el juego se ejecuta en el dispositivo. Para abrir la consola, presiona la pantalla con cuatro dedos y, luego, ingresa los siguientes comandos.
| Comando | Descripción |
|---|---|
stat unit |
Muestra el uso actual de la memoria física agregada en la fila Mem, que se actualiza en cada fotograma. |
stat unitmax |
Muestra el uso promedio y máximo de la sesión de la memoria física y virtual agregada en la fila Mem. |
stat unit
muestra la fila MemVisualiza la memoria con Unreal Insights
Unreal Insights te permite supervisar y visualizar métricas de memoria, como estadísticas de memoria de la plataforma y contadores personalizados, a lo largo del tiempo con gráficos de líneas de tiempo precisos en cuanto a los fotogramas.
- Conecta tu dispositivo a los canales de seguimiento de memoria con marcas que incluyan
default,counterspara ver el gráficoPlatformMemory/UsedPhysical(VmRSS + VmSwap) junto con la línea de tiempo de los fotogramas. - Opcional: Para hacer un seguimiento de las métricas de memoria personalizadas con más detalle, declara y actualiza un contador de seguimiento personalizado con
TRACE_DECLARE_MEMORY_COUNTERyTRACE_COUNTER_SET.
#include "ProfilingDebugging/CountersTrace.h"
TRACE_DECLARE_MEMORY_COUNTER(Trace_EstimatedPhysicalMemory, TEXT("Memory/EstimatedPhysicalMemory"));
void UpdateMemoryTraceCounter()
{
// Note: Ensure GetEstimatedPhysicalMemory() is defined as shown
// in the Query memory at runtime using C++ APIs section.
TRACE_COUNTER_SET(Trace_EstimatedPhysicalMemory, GetEstimatedPhysicalMemory());
}
Memory/EstimatedPhysicalMemory.Verifica el uso preciso de la memoria con Perfetto
Para verificar los valores exactos del SO Android 'anonymous RSS + swap' en lugar de una estimación, usa Perfetto. Perfetto captura métricas de memoria a nivel del sistema para evaluar la huella exacta de tu juego.