Représentant la pression exercée sur la mémoire d'un processus, la métrique **RSS anonyme + swap** est essentielle pour maintenir la stabilité du jeu. Elle sert à la fois de seuil limite de mémoire pour le limiteur de mémoire (Android 17 et versions ultérieures) et de référence standard pour les données vitales de la mémoire dans la Google Play Console.
Il est difficile de mesurer l'utilisation de la mémoire qui correspond exactement à "RSS anonyme + swap" au moment de l'exécution ou de manière statique dans Unreal Engine.
Pour suivre l'utilisation de la mémoire, Unreal Engine fournit la VmRSS + VmSwap
métrique. Même si elle est plus large que "RSS anonyme + swap" car VmRSS inclut rssFile et rssShmem, elle reste une estimation fiable.
Suivez ces conseils pour analyser l'espace mémoire utilisé par votre jeu :
- Interroger la mémoire à l'aide des API C++
- Surveiller la mémoire à l'aide des commandes de la console
- Visualiser la mémoire avec Unreal Insights
- Vérifier l'utilisation précise de la mémoire à l'aide de Perfetto
Interroger la mémoire à l'aide des API C++
Utilisez les API C++ suivantes pour interroger les métriques de mémoire :
Requête de mémoire légère
Utilisez GetMemoryUsedFast pour une requête de mémoire légère. Sur Android, cette méthode renvoie l'espace mémoire estimé en n'analysant que les champs de mémoire nécessaires à partir de /proc/self/status, au lieu de lire l'intégralité du fichier.
Statistiques détaillées sur la mémoire
Utilisez GetStats pour interroger des statistiques détaillées sur la mémoire de la plate-forme. Cette méthode fournit des statistiques complètes sur la mémoire de la plate-forme, en renvoyant à la fois FPlatformMemoryStats.UsedPhysical et FPlatformMemoryStats.RssFile. Étant donné que UsedPhysical est la somme de VmRSS et VmSwap, vous pouvez vous rapprocher de la valeur de référence en soustrayant RssFile de celle-ci.
#include "HAL/PlatformMemory.h"
uint64 GetEstimatedPhysicalMemory()
{
FPlatformMemoryStats Stats = FPlatformMemory::GetStats();
#if PLATFORM_ANDROID
return Stats.UsedPhysical - Stats.RssFile;
#else
return Stats.UsedPhysical;
#endif
}
Surveiller la mémoire à l'aide des commandes de la console
Utilisez cette approche pour surveiller les tendances de la mémoire pendant que le jeu s'exécute sur l'appareil. Pour ouvrir la console, appuyez sur l'écran avec quatre doigts, puis saisissez les commandes suivantes.
| Commande | Description |
|---|---|
stat unit |
Affiche l'utilisation agrégée actuelle de la mémoire physique dans la ligne Mem, mise à jour à chaque frame. |
stat unitmax |
Affiche l'utilisation agrégée moyenne et maximale de la mémoire physique et virtuelle de la session dans la ligne Mem. |
stat unit
affichant la ligne MemVisualiser la mémoire avec Unreal Insights
Unreal Insights vous permet de surveiller et de visualiser les métriques de mémoire, telles que les statistiques de mémoire de la plate-forme et les compteurs personnalisés, au fil du temps à l'aide de graphiques de chronologie précis.
- Connectez votre appareil aux canaux de trace de la mémoire avec des indicateurs incluant
default,counterspour afficher le graphiquePlatformMemory/UsedPhysical(VmRSS + VmSwap) à côté de la chronologie des frames. - Facultatif : Pour suivre plus en détail les métriques de mémoire personnalisées, déclarez et mettez à jour un compteur de trace personnalisé à l'aide de
TRACE_DECLARE_MEMORY_COUNTERetTRACE_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.Vérifier l'utilisation précise de la mémoire à l'aide de Perfetto
Pour vérifier les valeurs exactes de RSS anonyme + swap de l'OS Android plutôt qu'une estimation, utilisez Perfetto. Perfetto capture les métriques de mémoire au niveau du système pour évaluer l'espace mémoire exact de votre jeu.