Hintergrund: Arbeitsspeicher-Verwaltung unter Android

128MB Arbeitsspeicher - Zu wenig?

128MB Arbeitsspeicher - Zu wenig?

Neben der kurzen Akkulaufzeit wird von vielen Usern vor allem der kleine Arbeitsspeicher aller aktuellen Android-Phones bemängelt. Egal ob HTC Magic, Freerunner oder Samsung Galaxy – neben dem Google-Betriebssystem haben sie eines gemeinsam: 128 Megabyte von Anwendungen nutzbaren Arbeitsspeicher (RAM).
In Anbetracht aktueller Arbeitsspeichergrößen von über 4 Gigabyte bei modernen Desktop-Computern scheint dies vielen Nutzern deutlich zu wenig zu sein. Denn auch wenn es nur ein Smartphone ist, es sollen schließlich mehr als eine Hand voll Anwendungen parallel laufen – darunter solche Speicherfresser wie Webbrowser oder Spiele mit detaillierter Grafik.
Dass diese Fülle von Anwendungen nicht gleichzeitig im Speicher bleiben kann, ist klar. Viele User greifen daher zu Tools wie “Close Everything” oder “Taskiller” und beenden damit grundsätzlich alle Programme, die sie im Moment nicht benötigen.

Die Gründe, wieso dieses Verhalten nicht wirklich sinnvoll oder sogar kontraproduktiv ist, sollen in diesem Artikel nun etwas genauer erläutert werden.

Grundlagen

Da das Android-Betriebssystem gerade auf kleinen, mit eher schwacher Hardware ausgestatteten Geräten laufen sollte, mussten sich die Entwickler über die Ressourcenverwaltung besonders Gedanken machen.
Es bedurfte einer intelligenten Speicherverwaltung, sodass das System auch nach zig gestarteten Anwendungen noch stabil und flüssig bedienbar bleibt. Das ganze sollte natürlich möglichst unbemerkt vom Benutzer und ohne Beeinträchtigung der Funktionalität der Anwendungen geschehen.

Windows XP: "Nicht genügend virtueller Speicher"

Windows XP: "Nicht genügend virtueller Speicher"

Man entschied sich dabei für ein Konzept, das sich grundlegend von dem der Desktop-Betriebssysteme (Windows, MacOS, Desktop-Linux) unterschied. Während etwa unter Windows der Start einer Anwendung mit einer Fehlermeldung quittiert wird, sobald der Arbeitsspeicher voll ist, wird man eine solche Meldung unter Android praktisch nicht zu sehen bekommen.

Speicherverwaltung unter Android

Denn dort arbeitet im Hintergrund ein Dienst, der sämtliche Programme und Hintergrundanwendungen überwacht und steuert. Sobald ein neues Programm oder Spiel gestartet werden soll, dafür jedoch nicht genug Speicher zur Verfügung steht, beendet Android dafür ein anderes Programm. Dabei wählt es diejenigen Anwendungen, die am ehesten nicht mehr benötigt werden. Die grobe Reihenfolge ist dabei wie folgt:

  1. Programme im Hintergrund, die der Nutzer schon lange nicht mehr aufgerufen hat
  2. nicht direkt genutzte Services (etwa der MP3-Player im Hintergrund)
  3. Teile des momentan aktiven, sichtbaren Programms

Es werden jedoch noch viele weitere Parameter (etwa von einem Programm abhängende andere Programme) in Betracht gezogen, um möglichst selten Programme zu beenden, die vom User jetzt oder in naher Zukunft benötigt werden.

Anzeige:

Automatische Datensicherung

Nun mag es grundsätzlich erstmal unschön klingen, wenn Anwendungen einfach beendet werden, obwohl dort vielleicht ungespeicherte Daten (etwa eine noch nicht abgesendete SMS oder offene Browser-Fenster) vorliegen. Hierfür bietet das Betriebssystem jedoch jeder Anwendung vor dem Beenden die Möglichkeit, eine Art Abbild des aktuellen Status zu speichern und diesem beim nächsten Start wieder zu laden. Sofern das Programm also sauber programmiert ist, wird der User keinerlei Unterschied zwischen einer beendeten (und neu gestarteten) und einer laufenden (und aus dem Hintergrund geholten) Anwendung bemerken.
Hier zeigt sich nun das Problem von Apps wie “Taskiller”, die Anwendungen einfach “killen”: Es ist dabei nicht garantiert, dass die Anwendung alle ihre Daten sichern und anschließend den Speicher freigeben kann. Durch das erzwungene, nicht vom System gesteuerte Beenden können also Daten im Speicher zurückbleiben und damit genau das Gegenteil von dem erhofften Ergebnis eintreten.

Grundsätzlich ist es unter Linux (worauf Android ja basiert) normal, dass der Arbeitsspeicher immer recht voll ist, da das System ungenutzten Speicher zum zwischenspeichern (”cachen”) verwendet. Android erstellt zum Beispiel leere Prozesse, die im Hintergrund bereitstehen und genutzt werden, sobald ein neuer Anwendungsprozess gestartet wird.

Es ist also prinzipiell egal, wieviele Anwendungen man gestartet hat, da Android immer nur die wichtigsten Programme im Speicher hält – alle anderen werden beendet und bei Bedarf, unbemerkt vom Nutzer, wieder gestartet.
Apps, die den Arbeitsspeicher “leeren”, haben in dieser Hinsicht also keinen Nutzen sondern bereiten unter Umständen sogar zusätzliche Probleme durch Datenverlust und Speicherlecks.
Sie können nur in Ausnahmen und gezielt eingesetzt sinnvoll sein, um etwa stark CPU-belastende Prozesse zu beenden.
Mehr Informationen zur Speicherverwaltung und den Lebenszyklen von Anwendungen gibt es auf der Android-Entwicklerwebseite (Englisch).

Du kannst alle Antworten zu diesem Eintrag via RSS 2.0 Feed erfolgen. Du kannst einen Kommentar hinterlassen, oder einen Trackback von deiner eigenen Seite.

213 Kommentare »

 
 

Einen Kommentar hinterlassen

XHTML: Diese Tags kannst Du benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>