2022-10-28
Der Hauptgrund für Abstürze ist in den meisten Fällen ein Mangel an RAM. Wir wollen herausfinden, wie der Arbeitsspeicher auf Android-Geräten funktioniert und versuchen, Abstürze zu vermeiden. Lassen Sie uns auch einige andere Dinge ansprechen, die das Problem auslösen können.
Das Wort "Absturz" wird allgemein verwendet, um sich auf das erzwungene Beenden eines laufenden Programms (oder eines Spiels) auf einem Smartphone/Tablet mit dem Android-Betriebssystem zu beziehen. In den meisten Fällen ist dies auf einen Mangel an Arbeitsspeicher (auch RAM genannt) zurückzuführen, in den alle Daten der Anwendungen geladen werden, die zu diesem Zeitpunkt auf dem Gerät laufen. Wenn der Arbeitsspeicher nicht mehr ausreicht, um neue Informationen aufzunehmen, schließt das Android-System zwangsweise die laufenden Prozesse, um ihn freizugeben.
Für ein besseres Verständnis der Ursache von Programmabstürzen unter Android müssen wir verstehen, wie das Ganze von innen heraus funktioniert. Zunächst wollen wir uns ansehen, wie das System den Arbeitsspeicher verwaltet und warum ihm manchmal der Speicher ausgeht. Dies wird uns auch helfen, die Frage zu beantworten, wie man Abstürze beheben kann.
Was ist RAM in Android und wie beeinflusst es Abstürze
Es ist erwähnenswert, dass das Android-Betriebssystem auf dem Linux-Kernel basiert. Jedes Mal, wenn wir ein Programm (oder ein Spiel) auf unserem Gerät ausführen, wird im Kernel ein spezieller Prozess für diese Anwendung erstellt. Dies ist notwendig, um zu bestimmen, wie viele Ressourcen der laufenden Anwendung "zugewiesen" werden: wie viel RAM zugewiesen werden soll, wie viel Prozessorleistung benötigt wird, welche Netzwerkanfragen gestellt werden sollen, welche E/A-Operationen (was in den permanenten Speicher geschrieben oder aus diesem "abgerufen" werden soll) und so weiter.
Kurz gesagt, jede laufende Anwendung ist ein erstellter Prozess innerhalb des Systems, der von Android eine bestimmte Menge an verschiedenen Hardwareressourcen anfordert.
Und was passiert, wenn der Prozess die Menge an RAM benötigt, die ihm "zugewiesen" wird. Denn wenn ein Programm eine bestimmte Menge an CPU-Ressourcen benötigt, erhält es diese zu 100 %, da die CPU-Ressourcen konventionell gesehen ein unendlicher Wert sind. Jede Aufgabe wird vom Prozessor ausgeführt, die Frage ist nur die Zeit.
Aber die Menge des Speichers ist, wie wir wissen, streng begrenzt. In diesen Momenten kommt es zu einem "Absturz": Das Programm hat so viel Speicher angefordert, wie das System nicht bereitstellen kann, und die weitere Ausführung des Prozesses ist unmöglich.
Wenn wir es einfacher machen, startet jeder Klick auf ein Anwendungssymbol seinen Prozess, der den Kernel mit dieser Frage fragt: "Ich brauche mehr... RAM, damit ich wenigstens neu starten und dem Benutzer das Hauptmenü zeigen kann". Wenn wir dann mehr ROM benötigen, ruft der Prozess den Kernel wieder an: "Ich brauche so viel ... Speicher, um diese Dateien zu laden, diese und ...".
Abhängig von der Anwendung benötigen wir unterschiedliche Mengen an RAM für die Anwendung. Wenn Sie zum Beispiel ein "schweres" und schwerfälliges Spiel mit 3D-Grafiken ausführen, wird ein Vielfaches dieses Speichers benötigt als ein Messenger oder ein Webbrowser. Das liegt daran, dass solche Spiele den Prozessor und den Grafikkern zu stark belasten. Jedes Element in den Texturen (Autos, Waffen usw.) muss irgendwo im Speicher abgelegt werden, damit es weiter verwendet werden kann. Dies alles wird im Hauptspeicher gespeichert, der von den gerade laufenden Anwendungen verwendet wird.
Gut, dass unser System über spezielle Dienste verfügt, die sich um die Freigabe des Speichers kümmern, d.h. ihn freigeben. Wenn wir ein Programm schließen, wird der Prozess "beendet": Er wird einfach aus dem Speicher entladen und gibt den zuvor verwendeten Teil des Speichers frei. Der freigegebene Speicher geht in den so genannten "Free Memory"-Pool, aus dem der Kernel die begehrten Megabytes für andere laufende Anwendungen zieht. Dies bedeutet "Freier Speicher".
Aber das System verfügt auch über einen anderen Pool, der "Verfügbarer Speicher" genannt wird, was wiederum "Verfügbarer Speicher" bedeutet. Das scheint dasselbe zu sein. Was ist der Unterschied?
Was ist verfügbarer Speicher und freier Speicher
Im Allgemeinen ist es für das Betriebssystem nicht vorteilhaft, große Mengen an Speicher als freien Speicher, d.h. im Pool "Freier Speicher", zu halten. Warum? Einfach. Android ist ein so großer Mechanismus, dass jeder freie Speicher irgendwo "gestopft" werden kann. Zum Beispiel, um dem Systemkern einige Aufgaben zuzuweisen, die für den Betrieb des Geräts unerlässlich sind, oder um Programme, die bereits laufen, verfügbar zu machen.
Die Logik dahinter ist, dass zu irgendeinem Zeitpunkt in der Zukunft das eine oder andere Programm mehr Speicher benötigen könnte, und damit es keine zeitraubenden Anfragen an den Kernel stellt, wird ihm "zusätzlicher" Speicher zugewiesen, den es im Moment nicht braucht, der aber nützlich sein könnte. Dies wird als verfügbarer Speicher bezeichnet, der im Pool "Verfügbarer Speicher" gespeichert ist. Er kann jederzeit aufhören, als "Rettungsanker" oder Fallback zu fungieren und direkt verwendet werden.
Eingebaute Methoden zum Freigeben von RAM
Aus dem bereits oben beschriebenen Grund verwendet der Android-Kernel so viel Speicher wie möglich. Solange das System über genügend Speicherplatz verfügt, kann es damit ziemlich frei "um sich werfen". Es kommt jedoch eine Zeit, in der die Ressourcen nicht einmal für die Ausführung eines Programms ausreichen. Woher kommt dann die Erinnerung? Es gibt mehrere Lösungen:
- Stoppen eines Prozesses (Anwendung).
- Die ZRAM -Technologie.
- Mit einer Auslagerungsdatei - SWAP (Speicher, der von einem dauerhaften Speicher, z.B. einer Speicherkarte, "umgewandelt" wird, um als RAM verwendet zu werden).
Wir werden übrigens mehr über Auslagerungsdateien sprechen, wenn wir zu den Empfehlungen kommen.
Die erste Variante bedeutet, dass der Kernel einfach einen zuvor laufenden Programmprozess "abschießt", um im RAM Platz für die Daten des neuen Programms zu schaffen. Wir haben zum Beispiel 5 Anwendungen in dieser Reihenfolge gestartet (wichtig zu wissen): WhatsApp, Viber, Facebook, Gmail, Subway Surfers und wir wollen YouTube öffnen, aber die Ressourcen sind weg. Was wird geschehen? Das System prüft die bereits laufenden Prozesse und beendet WhatsApp, da es als erstes gestartet wurde (wir haben es vor langer Zeit verwendet, im Gegensatz zu Gmail und den anderen). Und dem Kernel ist es völlig gleichgültig, ob wir WhatsApp noch brauchen oder nicht. Das ist der Preis der Ausgabe.
Die zweite Option mit ZRAM ist nachsichtiger. Die Idee ist, dass der Kernel, um dem Prozess eine bestimmte Menge an Speicher zuzuweisen, auf einen Teil des bereits belegten Speichers zugreift und ihn komprimiert, wodurch eine Art Archiv entsteht. Dieses Archiv wird dann im internen Speicher (Festplatte) abgelegt und dort gespeichert, bis es wieder benötigt wird. Wenn wir die Situation der 5 oben genannten Anwendungen auf analoge Weise betrachten, würde etwa Folgendes passieren:
- Suchen Sie nach "WhatsApp", das schon lange läuft.
- Suchen Sie nach Speicherabschnitten, die für "WhatsApp" bestimmt sind und selten verwendet werden.
- Archivieren (komprimieren) Sie diese Abschnitte und schreiben Sie sie auf die Festplatte (ROM).
Dadurch wird der Speicher für die neue Anwendung freigegeben. Um jedoch erneut auf WhatsApp zuzugreifen, liest das System das auf dem Speichermedium gespeicherte Archiv und entpackt es. All das braucht Zeit (in diesen Momenten kommt es übrigens zu diversen Systemrucklern, wenn man zwischen Programmen wechselt), daher ist ZRAM auch nicht die idealste Technologie.
Manuelle Methoden der DRAM-Freigabe
In der Tat sind die vielen Programme zur Freigabe des Arbeitsspeichers, die es im Google Play Shop gibt, praktisch nutzlos. Und das, obwohl die Entwickler dieser Dienstprogramme manchmal sehr bemüht sind, uns davon zu überzeugen, dass ihr Dienstprogramm alle unsere Probleme mit zu wenig Arbeitsspeicher lösen wird. Nicht, dass es schwer wäre, diese Software als effektiv zu bezeichnen, es ist sogar schwer, sie als sicher für das System zu bezeichnen, denn es stellen sich nur Fragen zu ihrer Schädlichkeit.
Wie wir bereits sagten, hatte Android ursprünglich mehrere Möglichkeiten zur Verwaltung des Arbeitsspeichers, die schon vor vielen Jahren existierten. Die neuen Builds von Android 10 und 11 verfügen über immer fortschrittlichere Mechanismen. Das System selbst behält den Überblick über den Speicher und legt fest, welche Anwendungen vorrangig geschlossen werden müssen, um Ressourcen zuzuweisen. Daher ist die Installation von RAM-Reinigungssoftware eine nutzlose Initiative.
Wir werden uns realistischere, wenn auch weniger effektive Möglichkeiten ansehen, nicht um Speicher freizugeben (der Kernel wird das perfekt für uns tun), sondern um ihn zu sparen. Besonders relevant sind Methoden für Geräte mit wenig RAM.
Deaktivieren der Synchronisation
Der erste und sicherste Weg, RAM zu sparen, ist die Deaktivierung der Synchronisation von installierten Anwendungen. Dies gilt für E-Mails, verschiedene Konten usw. Dies kann wie folgt geschehen:
Schritt 1 . Öffnen Sie die Systemeinstellungen.
Schritt 2 . Suchen Sie den Eintrag "Benutzer und Konten" (kann "Konten" oder "Konten" heißen). Je nach Gerätehersteller und Gehäuse können diese Elemente sehr unterschiedliche Namen haben. Wir sind auf der Suche nach etwas Ähnlichem
Schritt 3 . Suchen Sie die Einstellung "Auto-sync data" (oder etwas Ähnliches) und deaktivieren Sie sie.
Dadurch wird die Menge des Arbeitsspeichers reduziert und sogar die Akkulaufzeit verbessert, da es nun weniger Aktivität und "Leben" im System gibt, das CPU- und RAM-intensiv ist.
Repriorisierung von Anwendungen
In modernen Android-Versionen gibt es eine Option, die es uns erlaubt, jeder auf dem System installierten Anwendung eine Ausführungspriorität zuzuweisen. Bei einigen können wir beispielsweise die Hintergrundaktivität und damit die Menge der ihnen zuzuweisenden Ressourcen manuell begrenzen. Andere hingegen können auf einen bestimmten Status gesetzt werden und sie können frei und einfach durch das System "wandern" und die richtige Menge an Speicher, CPU-Ressourcen usw. anfordern.
Um die Prioritäten zu setzen, gehen wir wie folgt vor:
Schritt 1 . Anmeldung bei den Geräteeinstellungen.
Schritt 2 . Suchen Sie die Zeile "Über" oder System" oder "Über das Telefon" und öffnen Sie sie.
Schritt 3 . Suchen Sie die Zeile "Build number" und klicken Sie 5-10 Mal, bis das Popup "No need, you are a developer" erscheint.
Schritt 4 . Gehen wir einen Schritt zurück, so finden wir in diesem Abschnitt das angezeigte Menü "Für Entwickler" . Aktivieren Sie es.
Schritt 5 . Suchen Sie die Zeile "Leerlaufanwendungen" und klicken Sie sie an.
Schritt 6 . In der Liste finden wir die Programme, die wir selten benutzen, und stellen einen der beiden Werte ein (der zweite ist besser): "FREQUENT", "RARE".
Was bedeuten diese Prioritäten? Jedem Programm können insgesamt 4 Werte zugeordnet werden. Dieses System kann man sich als 4 Boxen vorstellen, jede mit ihren eigenen Merkmalen. ACTIVE" bedeutet, dass die Anwendungen eines bestimmten Segments in keiner Weise eingeschränkt werden und so viele Ressourcen verbrauchen können, wie sie wollen. In absteigender Reihenfolge der "Freiheit" folgen die Boxen "WORKING_SET", "FREQUENT" und "RARE".
Android analysiert unsere Aktionen automatisch und ordnet die Dienstprogramme rechtzeitig der einen oder anderen Box (Kategorie) zu, aber wir können dies auch manuell tun. Die Hauptsache ist, die Programme zu definieren, die wir einschränken wollen.
Es sollte beachtet werden, dass der Prozess zum Entsperren des Menüs "Für Entwickler" je nach installierter Android-Version und Skin (MIUI, One OS, AOSP usw.) variieren kann.
Installation von Greenify
Ja, oben haben wir bereits über die Wirksamkeit verschiedener Anwendungen argumentiert, die darauf abzielen, RAM freizugeben, die Systemleistung zu erhöhen und das Multitasking mit nur 2 Klicks zu verbessern. Aber es lohnt sich, gleich darauf hinzuweisen, dass Greenify kein primitiver Task-Killer ist, der uns Gigabytes an freiem Arbeitsspeicher und großartiges Multitasking verspricht.
Die Theorie, die wir am Anfang dieses Artikels besprochen haben, hat uns geholfen, den ganzen Mechanismus zu verstehen, wie Arbeitsspeicher und Android zusammenspielen. Daraus können wir schließen, dass wir die Anzahl der Anwendungen, die auf den Speicher zugreifen können, einschränken müssen, um mehr freien Speicher zu haben. Wir werden keine laufenden Programme "völkermorden" und Prozesse ohne Versuch beenden, wie es verschiedene Task-Manager vorschlagen. Wir werden einen anderen Weg einschlagen - wir werden Hintergrundaktivitäten verhindern. Dies kann mit dem Programm Greenify gemacht werden.
Das Programm selbst funktioniert auf fast jedem Gerät, aber wir brauchen Root-Zugriff, damit es unsere Aufgabe erfüllen kann, die Hintergrundaktivität aufrechtzuerhalten und die anderen Anwendungen zu blockieren.
Schritt 1. Laden Sie das Programm aus dem offiziellen Google Play Shop herunter.
Schritt 2. Starten Sie es und folgen Sie den Schritten in den Screenshots - überspringen Sie die Smart Hibernation-Einstellung und wählen Sie den ROOT-Modus.
Schritt 3. Gehen Sie zu den Einstellungen (drücken Sie die "drei Punkte" in der oberen rechten Ecke) und aktivieren Sie Folgendes: "Aggressives Dösen" , "Aufwachen überwachen und ausschalten" und "Immer ignorieren kein Hintergrund" .
Schritt 4. Wir fügen die Anwendungen hinzu, deren Aktivität wir einschränken wollen.
Doch selbst diese Variante ist noch fragwürdig, da der von Greenify zur Verfügung gestellte Speicherplatz theoretisch zu fast 100% durch die für den Betrieb der Anwendung benötigten Dienste der Anwendung selbst "kompensiert" wird. Aber einen Versuch ist es auf jeden Fall wert. Vor allem diejenigen, die Root-Zugriff und, noch besser, ein installiertes Xposed Framework haben.
Erstellen einer Auslagerungsdatei
Diese Methode erlaubt es, den Speicher zu erweitern, nicht ihn zu sparen. Als nächstes werden wir versuchen, eine SWAP-Datei zu erstellen, die vom System verwendet werden soll. Dadurch wird der verfügbare Arbeitsspeicher auf dem externen Speicher, der SD-Karte, erhöht.
Bitte beachten Sie: Um die SWAP-Datei zu erstellen, muss das Gerät Root-Zugriff haben, die BusyBox muss installiert sein und der Kernel muss die Swappiness-Technologie unterstützen. Die folgenden Anweisungen gehen davon aus, dass Ihr Gerät alle 3 Anforderungen erfüllt.
So erstellen Sie eine Auslagerungsdatei, um den Arbeitsspeicher zu erweitern:
Schritt 1. Stellen Sie sicher, dass die SD-Karte, die Sie dem Arbeitsspeicher zuweisen möchten, frei ist.
Schritt 2. Prüfen Sie, ob die von Ihnen benötigte Software mit dem Gerät kompatibel ist. Dazu laden wir dieses Dienstprogramm aus dem offiziellen Google Play Shop herunter. Installieren und starten Sie, indem Sie Root-Zugriff gewähren.
Schritt 3. Starten Sie den Test, indem Sie "Start Ramexpander Test Here" drücken. Wählen Sie den Ort, an dem die Testdatei erstellt werden soll, und warten Sie eine Weile.
Schritt 4. Sobald der Test abgeschlossen ist, wird eine Meldung angezeigt, die angibt, ob das Gerät die Erstellung einer Auslagerungsdatei unterstützt.
Schritt 5. Wenn Punkt 4 in Ordnung ist, installieren Sie direkt die SWAP-Erstellungssoftware aus diesem Forum (Anmeldung erforderlich). Starten Sie es und geben Sie root ein.
Schritt 6. Drücken Sie die Schaltfläche "optimaler Wert" , um die Größe der vom System benötigten SWAP-Datei zu bestimmen.
Schritt 7. Als nächstes werden Sie aufgefordert, die Partition für die Auslagerungsdatei zu wählen. Sie wählen Ihre Speicherkarte und einen optimalen Wert.
Schritt 8. Warten Sie eine Weile und vergewissern Sie sich, dass der Vorgang erfolgreich ist, nachdem eine Bestätigungsmeldung erscheint. Der Erfolg wird auch durch eine Benachrichtigung angezeigt.
Es ist wichtig! Die Erlangung von Root-Zugriff auf den meisten modernen Geräten kann zu einem vollständigen Verlust der Funktionalität führen. Der Prozess wird in diesem Artikel nicht beschrieben, da die Möglichkeiten, Root-Zugriff zu erhalten, je nach Hersteller und anderen Nuancen variieren. Weitere Informationen zum Rooten finden Sie im 4PDA-Forum.
Andere Ursachen für App-Abstürze
Eine weitere Ursache für App-Abstürze können verschiedene Softwarefehler sein. Es kommt häufig vor, dass ein Firmware-Update oder ein Upgrade auf eine neuere Android-Version Fehler und nachfolgende Probleme mit bestimmten Anwendungen verursacht, einschließlich Abstürzen.
Die Lösung ist hier nicht so einfach, wie es scheinen mag, da das Problem nicht in unserem "Blickfeld" liegt. Alles, was wir als normale Benutzer tun können, ist, das Programm neu zu installieren oder auf neue Updates vom Entwickler zu warten. Wenn also der Grund für den Absturz einer bestimmten Anwendung nicht mit der Menge des freien Arbeitsspeichers zusammenhängt, können Sie versuchen, sie einfach neu zu installieren. Eine Aktualisierung der Firmware auf die neueste Version kann ebenfalls helfen.
Fazit
In diesem Artikel haben wir versucht, den recht komplexen und umfangreichen Mechanismus, wie Android mit dem RAM arbeitet, ein wenig zu verstehen. Und die wenigen oben beschriebenen Möglichkeiten werden dazu beitragen, die Menge des verfügbaren Speichers auf einem höheren Niveau zu halten, als es vorher war.