Der Messwert „anonymer RSS + Swap“ gibt den Arbeitsspeicherdruck eines Prozesses an und ist ein wichtiger Messwert für die Stabilität von Spielen. Er dient sowohl als Grenzwert für den Arbeitsspeicherbegrenzer (Android 17 und höher) als auch als Standard-Benchmark für die Messwerte zur Arbeitsspeichernutzung in der Google Play Console.
Es ist schwierig, die Arbeitsspeichernutzung zu messen, die genau mit „anonymer RSS + Swap“ übereinstimmt, entweder zur Laufzeit oder statisch in der Unreal Engine.
Für das Tracking der Arbeitsspeichernutzung bietet die Unreal Engine den VmRSS + VmSwap
Messwert. Obwohl er umfassender ist als „anonymer RSS + Swap“, da VmRSS auch rssFile und rssShmem umfasst, dient er dennoch als zuverlässige Schätzung.
Folgen Sie dieser Anleitung, um den Speicherbedarf Ihres Spiels zu analysieren:
- Arbeitsspeicher mit C++-APIs abfragen
- Arbeitsspeicher mit Konsolenbefehlen überwachen
- Arbeitsspeicher mit Unreal Insights visualisieren
- Genaue Arbeitsspeichernutzung mit Perfetto überprüfen
Arbeitsspeicher mit C++-APIs abfragen
Verwenden Sie die folgenden C++-APIs, um Arbeitsspeichermesswerte abzufragen:
Einfache Arbeitsspeicherabfrage
Verwenden Sie GetMemoryUsedFast für eine einfache Arbeitsspeicherabfrage. Unter Android gibt diese Methode die geschätzte Arbeitsspeichernutzung zurück, indem nur die erforderlichen Arbeitsspeicherfelder aus /proc/self/status geparst werden, anstatt die gesamte Datei zu lesen.
Detaillierte Arbeitsspeicherstatistiken
Verwenden Sie GetStats, um detaillierte Arbeitsspeicherstatistiken der Plattform abzufragen. Diese Methode liefert umfassende Arbeitsspeicherstatistiken der Plattform und gibt sowohl FPlatformMemoryStats.UsedPhysical als auch FPlatformMemoryStats.RssFile zurück. Da UsedPhysical die Summe aus VmRSS und VmSwap ist, können Sie sich dem Benchmark-Wert nähern, indem Sie RssFile davon subtrahieren.
#include "HAL/PlatformMemory.h"
uint64 GetEstimatedPhysicalMemory()
{
FPlatformMemoryStats Stats = FPlatformMemory::GetStats();
#if PLATFORM_ANDROID
return Stats.UsedPhysical - Stats.RssFile;
#else
return Stats.UsedPhysical;
#endif
}
Arbeitsspeicher mit Konsolenbefehlen überwachen
Mit diesem Ansatz können Sie Arbeitsspeichertrends beobachten, während das Spiel auf dem Gerät ausgeführt wird. Tippen Sie mit vier Fingern auf den Bildschirm, um die Konsole zu öffnen, und geben Sie dann die folgenden Befehle ein.
| Befehl | Beschreibung |
|---|---|
stat unit |
Zeigt die aktuelle aggregierte physische Arbeitsspeichernutzung in der Zeile „Mem“ an, die mit jedem Frame aktualisiert wird. |
stat unitmax |
Zeigt die durchschnittliche und maximale aggregierte physische und virtuelle Arbeitsspeichernutzung in der Zeile „Mem“ an. |
stat unit Overlay
mit der Mem Zeile.Arbeitsspeicher mit Unreal Insights visualisieren
Mit Unreal Insights können Sie Arbeitsspeichermesswerte wie Arbeitsspeicherstatistiken der Plattform und benutzerdefinierte Zähler im Zeitverlauf mit framegenauen Zeitachsendiagrammen beobachten und visualisieren.
- Verbinden Sie Ihr Gerät mit den Arbeitsspeicher-Trace-Channels mit Flags, die
default,countersenthalten, um das DiagrammPlatformMemory/UsedPhysical(VmRSS + VmSwap) neben der Frame-Zeitachse anzusehen. - Optional: Wenn Sie benutzerdefinierte Arbeitsspeichermesswerte detaillierter verfolgen möchten, deklarieren und aktualisieren Sie einen benutzerdefinierten Trace-Zähler mit
TRACE_DECLARE_MEMORY_COUNTERundTRACE_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 Zähler.Genaue Arbeitsspeichernutzung mit Perfetto überprüfen
Wenn Sie genaue Werte für „anonymer RSS + Swap“ für das Android-Betriebssystem anstelle einer Schätzung überprüfen möchten, verwenden Sie Perfetto. Perfetto erfasst Arbeitsspeichermesswerte auf Systemebene, um die genaue Arbeitsspeichernutzung Ihres Spiels zu ermitteln.