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:
- Hier sehen Sie, 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-Haufens, 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 Speicherblö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 Aufruflisten für Android-Projekte.
