Je länger das Spiel läuft, desto mehr Speicher belegt es. Es wird zunehmend langsamer und am Ende zwangsweise beendet.
Warum Texturen, UI und Effekte werden beim Gebietswechsel nicht freigegeben → Folge GC läuft häufiger, dem OS geht der Arbeitsspeicher aus, es lagert in den Swap aus → Auf dem Bildschirm Nach einigen Stunden Spielzeit zunehmendes Ruckeln, dann erzwungenes Beenden (für den Spieler wie ein Verbindungsabbruch)
Speicherverbrauch bei Gebietswechseln messen, nicht freigegebene Texturen, UI-Elemente und Effekte finden und beheben, automatisierte Langzeittests (Soak-Tests).
Im Graphen
Langsamer Anstieg · Speicherverbrauch des Spielprozesses
Wo nachsehen
In der Leistungsüberwachung Process(Spiel)\Private Bytes über mehrere Stunden aufzeichnen. Auf Mobilgeräten den Beendigungsgrund in ApplicationExitInfo unter Android (REASON_LOW_MEMORY) und Jetsam-Berichte unter iOS
Spricht dafür
Bei jedem Gebietswechsel steigt der Speicherverbrauch und sinkt nicht wieder, mit längerer Laufzeit nehmen Ruckeln und erzwungenes Beenden zu
Spricht dagegen
Speicherverbrauch konstant, mit längerer Laufzeit aber Zittern: „Präzisionsverlust bei float-Zeitwerten“
Prüfmittel
Prüfung in der Umgebung des Spielers
Mehr dazu
Smartphones halten meist durch, indem sie Speicher komprimieren. Reicht der Speicher trotzdem nicht, beendet das OS das Spiel sofort, und es „fliegt raus“. Geräte mit wenig RAM trifft es zuerst.
Quellen
Memory allocation among processesAndroid (Google) Android hält durch, indem es Speicher in zRAM komprimiert. Reicht das nicht, beendet der Low Memory Killer Prozesse. Wird die App im Vordergrund beendet, wirkt das wie ein Absturz
ApplicationExitInfoAndroid (Google) REASON_LOW_MEMORY: Der Low Memory Killer des Systems hat den App-Prozess beendet (Geräte ohne Unterstützung melden REASON_SIGNALED bzw. SIGKILL)