Die Android-Plattform basiert auf der Annahme, dass kostenloser Arbeitsspeicher verschwendeter Arbeitsspeicher ist. Android versucht, immer den gesamten verfügbaren Arbeitsspeicher zu nutzen. So hält das System beispielsweise Apps im Arbeitsspeicher, nachdem sie geschlossen wurden, damit Nutzer schnell wieder zu ihnen wechseln können. Aus diesem Grund haben Android-Geräte oft nur sehr wenig kostenlosen Arbeitsspeicher (weitere Informationen zur Speicherzuweisung unter Android).
Der Android-Prozess Low Memory Killer (LMK) überwacht den Arbeitsspeicherstatus eines laufenden Android-Systems und reagiert auf einen hohen Arbeitsspeicherbedarf, indem er die am wenigsten wichtigen Prozesse beendet, um die Systemleistung auf einem akzeptablen Niveau zu halten.
Um zu entscheiden, welcher Prozess beendet werden soll, verwendet der LMK-Daemon einen Wert für „Speichermangel“ namens oom_adj_score, um die ausgeführten Prozesse zu priorisieren. Prozesse mit einem hohen Wert werden zuerst beendet. Hintergrund-Apps werden zuerst beendet, Systemprozesse zuletzt. In der folgenden Tabelle sind die LMK-Bewertungskategorien von hoch nach niedrig aufgeführt. Elemente in der Kategorie mit der höchsten Punktzahl in Zeile 1 werden zuerst entfernt:

LMK-Messwert in Android Vitals
Mit Android Vitals können Sie die LMK-Rate Ihrer App im Blick behalten und verbessern. In Android Vitals wird nur eine LMK-Rate gemessen: die vom Nutzer wahrgenommene LMK-Rate.
Der Messwert gibt den Prozentsatz der aktiven Nutzer pro Tag an, bei denen mindestens ein vom Nutzer wahrgenommener LMK aufgetreten ist. Ein vom Nutzer wahrgenommener LMK ist ein LMK, den der Nutzer wahrscheinlich bemerkt hat. Dazu gehören zum Beispiel LMKs, die auftreten, wenn in Ihrer App eine Aktivität angezeigt oder sie als Dienst im Vordergrund ausgeführt wird.
Sie finden den Messwert in Android Vitals im Abschnitt Stabilität:

Wie bei anderen wichtigen Messwerten wie ANRs und Abstürzen können Sie die Messwerte filtern, mit denen Ihrer Mitbewerber vergleichen oder die Änderung des Messwerts über einen langen Zeitraum (bis zu 3 Jahre) beobachten. Daten für bestehende Apps sind ab dem 28. Januar 2025 verfügbar.

Tools zur Arbeitsspeichernutzungs-Analyse
Mit den folgenden Tools können Sie Speicherprobleme auf folgende Weise finden und diagnostizieren:
- Sehen Sie sich an, wie Ihre App im Laufe der Zeit Speicher zuweist. Sie sehen eine Echtzeitgrafik, in der die Menge des von Ihrer App verwendeten Arbeitsspeichers, die Anzahl der zugewiesenen Java-Objekte und die Zeit der automatischen Speicherbereinigung angezeigt werden.
- Starten Sie Garbage-Collection-Ereignisse und machen Sie einen Snapshot des Java-Hoops, während Ihre App ausgeführt wird.
- Sie können die Arbeitsspeicherzuweisungen Ihrer App erfassen, alle zugewiesenen Objekte prüfen und den Stack-Trace für jede Zuweisung aufrufen.
Memory Profiler von Android Studio
Android Studio bietet den Memory Profiler als Teil des Android Profilers, mit dem Sie Speicherlecks und Speicherschwankungen erkennen können, die zu Rucklern, Einfrieren und sogar App-Abstürzen führen können. Der Profiler zeigt ein Echtzeitdiagramm der Arbeitsspeichernutzung Ihrer App an und ermöglicht es Ihnen, einen Heap-Dump zu erfassen, die Garbage Collection zu erzwingen und die Arbeitsspeicherzuweisung zu verfolgen.

Unity-Tools zur Arbeitsspeicheranalyse
Wenn Sie Ihre Apps mit der Unity Engine erstellen, können Sie der Anleitung zum Speicherprofiling in Unity folgen. Unity bietet zwei Tools zur Analyse der Speichernutzung in Ihrer Anwendung in Unity.
Das erste ist das Modul „Memory Profiler“, ein integrierter Profiler, der Ihnen grundlegende Informationen dazu liefert, wo Ihre Anwendung Arbeitsspeicher verwendet.

Das zweite Tool ist das Memory Profiler-Paket, ein Unity-Paket, das Sie Ihrem Projekt hinzufügen können. Das Paket fügt dem Unity-Editor ein zusätzliches Fenster für den Speicher-Profiler hinzu. Mit dem Memory Profiler können Sie die Arbeitsspeichernutzung in Ihrer Anwendung noch genauer analysieren. Sie können Snapshots speichern und vergleichen, um Speicherlecks zu finden, oder das Speicherlayout auf Probleme mit der Speicherfragmentierung prüfen.

Unreal Memory Insights
In der Unreal Engine erstellte Apps können Unreal Memory Insights verwenden, um detaillierte Informationen zur Arbeitsspeicherzuweisung und ‑entfernung aufzurufen, einschließlich der LLM-Tags (Low Level Memory) und Aufrufstacks, die mit Arbeitsspeicherblöcken verknüpft sind.
Das Abfragesystem von Memory Insights kann Live-Zuweisungen zu jedem Zeitpunkt ermitteln, Änderungen bei der Speichernutzung erkennen, Speicherlecks finden und kurzfristige von langfristigen Zuweisungen unterscheiden.
Ab UE 5.4 unterstützt Memory Insights die Speicheraufzeichnung mit Aufrufstacks für Android-Projekte.

Informationen zu wenig Arbeitsspeicher
Android bietet Callbacks und APIs, mit denen Sie die Speicheranforderungen Ihres Spiels reduzieren und ermitteln können, warum vorherige Spielläufe beendet wurden.
Callbacks
Registriere dich nicht für die eingestellten trim-Callbacks. Android bietet keine APIs zum Erkennen von Ereignissen mit nativem Arbeitsspeichermangel, wenn das System an die Speicherlimits stößt.
Trim-Callbacks haben sich nicht als hilfreich erwiesen, um das Beenden von Prozessen bei wenig Arbeitsspeicher zu verhindern. Daher wurden alle außer TRIM_MEMORY_UI_HIDDEN
und TRIM_MEMORY_BACKGROUND
eingestellt.
Spiel beenden
Android versucht, den gesamten verfügbaren Arbeitsspeicher für den Cache von Apps und Spielen zu verwenden, damit sie schnell geladen werden und die Nutzerfreundlichkeit verbessert wird. Wenn der Arbeitsspeicher jedoch knapp wird, beendet das System die speicherintensivsten Apps und Spiele, um Arbeitsspeicher für den normalen Gerätebetrieb freizugeben.
Informationen, Statistiken und Best Practices für eine bessere Nutzung des Arbeitsspeichers in Spielen:
ApplicationExitInfo
verwenden: Mit dieser API wird der Grund zurückgegeben, warum der vorherige Spiellauf vom Android-System beendet wurde. MitApplicationExitInfo
können Sie prüfen, ob ein geringer Arbeitsspeicher der Grund für den Abbruch eines vorherigen Prozesses war. Prüfen Sie, ob das Spiel aufgrund von wenig Arbeitsspeicher beendet wurde, damit es so optimiert werden kann, dass es auf diesem Gerät weniger Arbeitsspeicher benötigt.- Gesamter physischer RAM: Um zu verhindern, dass Spiele im Vordergrund beendet werden, und die Funktionen des Geräts zu nutzen, sehen Sie sich den gesamten physischen RAM pro Gerät an, um die Speichernutzung für Spiele entsprechend anzupassen. Wenn Sie verhindern möchten, dass Apps kurz nach dem Wechsel in den Hintergrund beendet werden, damit der Spieler Multitasking nutzen kann, verwenden Sie die trim-Callbacks (insbesondere
TRIM_MEMORY_UI_HIDDEN
), um die Speichernutzung des Spiels zu reduzieren.