Produktneuheiten

App für höhere Speicherlimits vorbereiten

Lesezeit: 2 Minuten
Profil von Blair Harmon ansehen
Blair Harmon Director of Product Management, Android Platform

Eine gute Nutzerfreundlichkeit ist das A und O von Android. Um dieses Versprechen zu halten, müssen Geräte schnell, reaktionsschnell und zuverlässig sein. Deshalb ist die Speicheroptimierung wichtiger denn je. Im gesamten Ökosystem wird die physische Speicherkapazität neuer Geräte aufgrund von Speicherpreiserhöhungen beibehalten oder sogar verringert. Nutzer erwarten jedoch weiterhin eine nahtlose App-Nutzung mit hoher Leistung.

In Android 17 haben wir Arbeitsspeicherlimits pro App eingeführt, beginnend mit Pixel-Geräten. So soll die allgemeine Nutzerfreundlichkeit vor Apps geschützt werden, die zu viel Arbeitsspeicher verwenden und systemweite Verlangsamungen verursachen. Im Laufe des kommenden Jahres werden immer mehr Hersteller die Android-Arbeitsspeicherlimits pro App für ihre Geräte mit 4 GB bis 16 GB RAM und mehr nutzen. Wenn Ihre App diese Grenzwerte überschreitet, wird sie verlangsamt und möglicherweise beendet. Die Optimierung des Speicherbedarfs Ihrer App ist unerlässlich, um eine Drosselung durch das Betriebssystem zu verhindern und eine reibungslose Nutzererfahrung zu gewährleisten.  

In diesem Beitrag erfahren Sie, wie diese Limits funktionieren, wie Sie den Speicherbedarf Ihrer App oder Ihres Spiels mithilfe neuer Android-Vitals-Messwerte messen und welche Maßnahmen Sie ergreifen können, um Ihre App oder Ihr Spiel zu optimieren.

Speicherlimits 

Wenn Ihre App das Limit des Arbeitsspeichers überschreitet, ergreift Android progressive Maßnahmen, um die Reaktionsfähigkeit des Geräts zu schützen:

  1. zRAM-Swapping: Wenn Ihre App das zugewiesene Limit erreicht, zwingt das System die Seiten Ihrer App in zRAM (komprimierter RAM). zRAM verhindert zwar das sofortige Entfernen von Seiten aus dem Arbeitsspeicher, das Komprimieren und Dekomprimieren von Seiten führt jedoch zu einem zusätzlichen CPU-Aufwand, der zu spürbaren Rucklern und Verlangsamungen der Benutzeroberfläche führen kann.
  2. Prozessbeendigung: Wenn die Arbeitsspeichernutzung Ihrer App weiterhin über den zRAM-Schwellenwert hinaus ansteigt, wird sie vom System beendet.  Wenn Sie feststellen möchten, ob Ihre App-Sitzung im Feld von diesen Einschränkungen betroffen war, können Sie getDescription() innerhalb von ApplicationExitInfo aufrufen. Wenn das System ein Limit angewendet hat, wird der Beendigungsanlass als REASON_OTHER gemeldet und der Beschreibungsstring enthält „MemoryLimiter:AnonSwap“. Sie können auch die triggerbasierte Profilerstellung mit TRIGGER_TYPE_ANOMALY verwenden, um automatisch Heap-Dumps zu erfassen, wenn das Speicherlimit erreicht wird.  

Weitere Informationen zu den Speicherlimits pro App und zur Systemdurchsetzung finden Sie in der Dokumentation zu Speicherlimits für Apps unter Android 17. Wenn Sie Ihre Anwendung auf verschiedenen Gerätekonfigurationen testen möchten, verwenden Sie die adb-Befehle für den Memory Limiter

Arbeitsspeicherprobleme überwachen und diagnostizieren

Was man nicht messen kann, kann man nicht optimieren. Um Speicherlecks, übermäßige Heap-Zuweisungen und OOM-Abstürze (Out-Of-Memory) im gesamten Android-Ökosystem zu erkennen, sind ergänzende Monitoring-Tools erforderlich:

  • Gesundheit auf Makroebene mit Android Vitals:Android Vitals in der Google Play Console bietet wichtige Messwerte wie Arbeitsspeichernutzung (anonymer RSS + Auslagerung) und Bitmap-Arbeitsspeichernutzung, um die Leistung auf Bevölkerungsebene ohne zusätzlichen Aufwand zu analysieren. So erhalten Sie einen klaren Überblick über die Speicherverteilung in verschiedenen Prozessstatus (Vordergrund, Hintergrund, vom Nutzer wahrgenommene Dienste und Cache) und RAM-Klassenbereichen, sodass Sie Speicherausreißer erkennen können.
  • Beenden des Memory Limiters und OOM-Tracking mit Firebase Crashlytics:Mit Crashlytics-Version 20.1.0 werden zusätzliche Debugging-Daten eingeführt, damit Sie über schwerwiegende Speicherbeeinträchtigungen informiert werden, bevor sie sich auf Ihre wichtigsten Messwerte auswirken. So können Sie Out-Of-Memory-Ausnahmen und das Beenden des Memory Limiters erkennen, priorisieren und beheben. Wenn Sie diese Ereignisse zusammen mit benutzerdefinierten Logs und Schlüssel/Wert-Metadaten erfassen, erhalten Sie sofort Kontext zum Prozessstatus, wenn ein Speicherfehler auftritt.
  • Traces im Feld mit ProfilingManager:Für Teams, die ein Framework zur Leistungsbeobachtung verwalten können, ermöglicht die in Android 15 (API-Level 35) eingeführte ProfilingManager API, dass Ihre App detaillierte Speicher-Debugging-Artefakte wie Java-Heap-Dumps und Heap-Profile direkt von Produktionsgeräten programmatisch anfordern und erfassen kann. Sie können auch das Erfassen von Heap-Dumps basierend auf bestimmten Systemsignalen wie TRIGGER_TYPE_OOM und TRIGGER_TYPE_ANOMALY auslösen. 

Weitere Informationen zu anderen Techniken zur Speicherüberwachung finden Sie in unserer Dokumentation.

Zusammenfassung und nächste Schritte

Da Android die Arbeitsspeicherlimits pro App für alle RAM-Klassen erweitert, ist jetzt der richtige Zeitpunkt, um den Arbeitsspeicherbedarf Ihrer App zu prüfen:

  1. Arbeitsspeicheroptimierungen priorisieren: Verhindern Sie, dass Ihre App durch Arbeitsspeicherlimits beeinträchtigt wird, indem Sie Best Practices anwenden. 
  2. Speichernutzung im Blick behaltenBehalten Sie das Speicherverhalten Ihrer App im Blick, um anomales Verhalten zu erkennen und zu beheben.  
  3. Spiel optimieren: Befolgen Sie die aktuellen Richtlinien für Spiele und komplexe Multimedia-Apps, um den Speicherverbrauch in allen Prozessstatus zu minimieren.

Hilfreiche Ressourcen und Referenzen

Geschrieben von:
Weiterlesen