Vérifier l'utilisation de la mémoire avec Unreal Engine

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++

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.

Superposition de l'unité de statistiques Unreal Engine affichant la ligne "Mem".
Figure 1. La superposition stat unit affichant la ligne Mem
.

Visualiser 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.

  1. Connectez votre appareil aux canaux de trace de la mémoire avec des indicateurs incluant default,counters pour afficher le graphique PlatformMemory/UsedPhysical (VmRSS + VmSwap) à côté de la chronologie des frames.
  2. 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_COUNTER et TRACE_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());
}

Unreal Insights affichant Memory/EstimatedPhysicalMemory.
Figure 2. La chronologie Unreal Insights affichant le compteur personnalisé 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.

Interface utilisateur Perfetto montrant la requête RSS anonyme, l'espace d'échange et leur somme.
Figure 3. L'UI Perfetto affichant la requête RSS anonyme, swap et leur somme.