Alles zum RAM-Management unter Android

  • 642 Antworten
  • Letztes Antwortdatum
Was ein Quark.

Aber ich spar mir hier zuschreiben, warum bei Android der Speicher eher voll als leer ist, und warum ein Taskmanager sogar noch größerer Müll ist. Damit macht man mehr kaputt als das es hilft. Wen es genauer interresiert: Es steht schon Gefühle 200 mal im Forum.


P.S. Mit deinem tollen Taskmanager werden die Programme erst recht abgewürgt ohne speichern zu können, was beim beenden durch Android eben gerade nicht passiert. Aber bleib ruhig bei deinem Taskmanager wenn du so ihn so toll findest. Android != Symbian. Aber da merkt man das du von Android (Linux) Augenscheinlich garkeine Ahnung hast.

Gesendet von meinem Desire HD mit der Android-Hilfe.de-App
 
Zuletzt bearbeitet:
Das der Ram sich benutzen lässt is doch toll. Ich finds sogar schade, dass mein DHD mit 768 MB Ram mit CM7 im Betrieb immer an die 200 MB übrig lässt. Der könnte ruhig runter auf 100 gehn :D gibts da nich ne Apl für? Offtopic, aber interessiert mich grade

Ansonsten - sei es auch nur Plazebo - finde ich schon, dass mein Phone frisch nach nem Neustart erstmal wieder so riiiiichtig rennt :)
 
D3f3kt schrieb:
Was ein Quark.

Aber ich spar mir hier zuschreiben, warum bei Android der Speicher eher voll als leer ist, und warum ein Taskmanager sogar noch größerer Müll ist. Damit macht man mehr kaputt als das es hilft. Wen es genauer interresiert: Es steht schon Gefühle 200 mal im Forum.


P.S. Mit deinem tollen Taskmanager werden die Programme erst recht abgewürgt ohne speichern zu können, was beim beenden durch Android eben gerade nicht passiert. Aber bleib ruhig bei deinem Taskmanager wenn du so ihn so toll findest. Android != Symbian. Aber da merkt man das du von Android (Linux) Augenscheinlich garkeine Ahnung hast.

Gesendet von meinem Desire HD mit der Android-Hilfe.de-App

Guten Tag,

wenn Du dich schon hinreißen läßt was zu antworten dann gibt doch einen link zu den 200 an, das ist hilfreicher als es so zu machen wie Du. Nicht jeder findet mit der Suche was er sucht und nicht jeder ist schon über 12 und weiß alles. ;-)

Gruß Coltan
 
Aber auch ein 12-Jähriger ist durchaus in der Lage die Suche zu benutzen und 2-3 Wörter in dieser einzutragen, den Weg hier in das schöne Forum hat er ja immerhin auch gefunden, und auch wie man ein Thema eröffnet. ;-) Außerdem ist das nicht in 2-3 Sätzen erklärt, jedenfalls nicht wenn man wirklich etwas Hintergrundwissen haben will.

Wenn ich es hier rein schreibe, steht es schon zum zweihundertundeinsten mal hier drin, und das ist genauso Quark.

Ich habe in meinem Post btw. schon mehr als genug Hinweise auf eine erfolgreiche Suche hinterlassen. Zudem kann man Nachschlagewerke wie Wikipedia etc. heranziehen. Warum macht ihr andere User dafür "verantwortlich" nur weil ihr nicht willens seid, mal selbst euch um ein Thema zu kümmern?


Gruß.
 
Zuletzt bearbeitet:
D3f3kt schrieb:
P.S. Mit deinem tollen Taskmanager werden die Programme erst recht abgewürgt ohne speichern zu können, was beim beenden durch Android eben gerade nicht passiert. Aber bleib ruhig bei deinem Taskmanager wenn du so ihn so toll findest. Android != Symbian. Aber da merkt man das du von Android (Linux) Augenscheinlich garkeine Ahnung hast.

Na immerhin habe ich das SDK hier installiert, und mich schon in die Programmierung von Android in Java eingearbeitet (bei der Beispiel-Notiz-Anwendung habe ich die 2. Version fertiggestellt und auch begriffen was ich tue), soviel zu meiner Ahnung.

Aber über eines sind wir uns ja sicher einig:

Wird ein Programm in den Hintergrund gestellt, bekommt es von Android eine "Benachrichtigung" (nehme an, das läuft über eine Callback-Funktion, die man bei irgend einer Initialisierung angeben kann - nicht unbedingt muss). Von diesem Zeitpunkt an, weiss das Programm, dass es jederzeit von Android beendet werden kann (und zwar ohne Möglichkeit, vorher noch Daten zu sichern). Solltest Du hier nicht zustimmen, dann hast Du keine Ahnung.

Sauber programmierte Anwendungen, werden diese Nachricht also beachten, und alle Daten speichern. Werden sie dann wieder in den Vordergrund geholt, werden die Daten einfach wieder geladen.

Leider gibt es Apps, insbesondere solche, die von Desktop-BSen auf die schnelle portiert wurden, die diese Nachricht ignorieren. Die müssen deswegen nicht schlecht sein, und ich will die auch benutzen (zudem, woher soll ich wissen, ob eine App sauber oder nicht sauber programmiert ist).

Nehmen wir z. B. ein unsauber programmiertes Textbearbeitungsprogramm, in dem ich viel eingegeben habe, aber längere Zeit nicht gespeichert habe. Jetzt muss ich was im Internet nachschlagen, rufe den Browser auf, habe da evtl. mehrere Tabs geöffnet, mit vielen Bildern. Muss dann noch was in der am Handy installierten Offline-Wikipedia (gibt es auch für Android) nachschlagen, gehe auf den Homescreen (wodurch der Browser aber nicht beendet wird), starte die Offline-Wikipedia und schlage dort nach. Dann fällt mir ein dass ich noch ein Foto in meinen Text einfügen will, dass ich aber vorher noch in der Bildverarbeitung bearbeiten will. Jetzt laufen schon 4 Programme, die alle ordentlich Speicher benötigen, obwohl der Browser und die Offline-Wikipedia gar nicht mehr benötigt werden. Beenden aus dem Programm heraus, kann man sie ja nicht (löbliche Ausnahme: der Opera Mobile). Irgendwann ist der Speicher voll... Android guckt nach, welches Programm wurde am längsten nicht mehr benutzt, ah, die Textverarbeitung, na dann können wir die ja beenden - Bumm!

Wer seine nicht mehr benötigten Programme dagegen mit einem Taskmanager brav beendet, dem kann sowas nicht passieren. Ich weiß besser als Android, welche Programme ich im Speicher halten möchte.

Im übrigen glaube ich, dass sich die Programmierer von Opera Mobile besser auskennen als Du. Die werden schon wissen, warum sie einen Beenden-Button eingebaut haben.
 
Bei schlecht programmierten Apps könnte ich dir vielleicht noch recht geben, wobei ich in der ganzen langen Zeit in welcher ich Android nutze mit den Hunderten von Apps noch niemals einen Datenverlust hatte. Soweit ich weiß wird das Management von Android verwaltet und nicht von den Apps. Und Android spiegelt die Daten wenn ein Programm aus prioritätsgründen Platz machen muss.

Definitiv widersprechen muss ich dir beim Beenden mit einem Taskmanager. Dieser sendet nämlich nicht einen Beenden-Befehl an das Programm, sodass dieses sich sauber beenden könnte, sondern ein Taskmanager würgt das Programm bzw. den Prozess einfach ab. Da ist genauso wenig mit speichern.

Wieviel Ahnung die Entwickler von Opera, du von Java oder ich davon haben ist absolut belanglos. Wer sich mit Linux beschäftigt weiß wie das System und das Speichermanagement funktioniert. Punkt.

Fakt ist, das die Daten eines Programmes im Speicher hinterlegt werden, bevor Android dieses beendet, und diese auch wieder lädt beim Aufruf des Programms.

Hier mal was zum lesen für dich, da du es mir ja sonst nicht glauben wirst. Klick

Gesendet von meinem Desire HD mit der Android-Hilfe.de-App
 
Zuletzt bearbeitet:
D3f3kt schrieb:
Gesendet von meinem Desire HD mit der Android-Hilfe.de-App
Danke, da steht doch das, was ich geschrieben habe:

"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."

Das mit dem Beenden stimmt aber meines Wissens nicht, sondern das Programm erhält die Möglichkeit seine Daten zu sichern (das sichern muss das Programm selbst machen!) bereits dann, wenn es in den Hintergrund gestellt wird. Sollte es das nicht machen (bei Desktop-BSen gibt es sowas nicht oder wird selten verwendet, daher gehe ich stark davon aus, dass es viele gute, portierte Programme gibt, die das nicht machen), dann droht Datenverlust. Beim automatischen Beenden durch Android erhält das Programm eben keine Möglichkeit mehr, seine Daten zu sichern, es wird wie von einem Taskmanager einfach gekillt (der Prozess "abgeschossen"). Programme die ich mit einem Taskmanager kille, von denen weiß ich, dass sie nichts mehr speichern müssen. Ein Datenbankprogramm z. B. würde ich natürlich nicht über einen Taskmanager beenden.

Anderes Beispiel: Ich habe eine Anwendung am Laufen, die sehr lange für eine Berechnung braucht (z. B. 1h), da ist es erst ärgerlich, wenn die nach 10 Minuten aufgrund von Speichermangel abgeschossen wird - da nützt es auch nichts, wenn sie sauber die Daten abspeichert und dann wiederherstellt. Rufe ich nach einer Stunde das Programm wieder auf, muss ich 50 Minuten warten. Darum schieße ich die Anwendungen, von denen ich weiß, dass sie nichts speichern müssen ab, wenn der freie Speicher unter einen bestimmten Wert fällt.
 
D3f3kt schrieb:
Wieviel Ahnung die Entwickler von Opera, du von Java oder ich davon haben ist absolut belanglos. Wer sich mit Linux beschäftigt weiß wie das System und das Speichermanagement funktioniert. Punkt.
Hmm Android und Linux haben zwar ein paar gemeinsamkeiten, ich beweifele aber stark, dass die App-Speicherverwaltung eine mit Linux ist.
Processes and Threads | Android Developers
Hier werden leider nur "java" prozesse angesprochen und wann diese beendet werden. Es ist aber ohne weiteres möglich, aus einer App heraus einen Linux-Prozess zu starten, der von Taskmanagern (habe nur einmal kurz einen anderen als den Onboard beim Galaxy S getestet, wurde mir als gut empfohlen, den Namen habe ich mir nicht gemerkt, weil er nichts taugte) nicht beendet werden kann.
Ich nehme schwer an, dass Linuxprozesse auch nicht vom Android Speichermanagment angetastet werden. Es wäre für ein Smartphone ja auch tragisch, wenn essentielle Systemdienste abgeschossen werden.

Weiß hier jemand überprüfbar näheres als, welche Prozesse von der Android Speicherverwaltung behandelt werden. Auf der verlinkten Developer Seite werden ja nur java Prozesse angesprochen.
 
Ähm, ein paar Gemeinsamkeiten? Android IST ein Linux-Derivat.

Link

Dort ist nachzulesen auf welchem Kernel Android (derzeit) basiert. Wie auch immer, der Kernel ist unter anderem für die Speicherverwaltung und die Verwaltung der Prozesse zuständig. Also auch für die Apps.
Hier kann man auch schön nachlesen wie das Zusammenspiel von Java über die Dalvik-VM mit dem Betriebssystem funktioniert.

Gesendet von meinem Desire HD mit der Android-Hilfe.de-App
 
Zuletzt bearbeitet:
Johan schrieb:
Anderes Beispiel: Ich habe eine Anwendung am Laufen, die sehr lange für eine Berechnung braucht (z. B. 1h), da ist es erst ärgerlich, wenn die nach 10 Minuten aufgrund von Speichermangel abgeschossen wird - da nützt es auch nichts, wenn sie sauber die Daten abspeichert und dann wiederherstellt. Rufe ich nach einer Stunde das Programm wieder auf, muss ich 50 Minuten warten. Darum schieße ich die Anwendungen, von denen ich weiß, dass sie nichts speichern müssen ab, wenn der freie Speicher unter einen bestimmten Wert fällt.

Dafür nimmt man ja auch einen Service anstatt einer Activity, und Apps mit aktiven Services werden priorisiert - sprich, nur dann gekillt, wenn gar nix anderes mehr geht und alle anderen Appeninen schon lange aus dem Speicher geflogen sind.
Da gibt's also kein Problem...

Sent from my MB525 using Tapatalk
 
D3f3kt schrieb:
Ähm, ein paar Gemeinsamkeiten? Android IST ein Linux-Derivat.

Link

Dort ist nachzulesen auf welchem Kernel Android (derzeit) basiert. Wie auch immer, der Kernel ist unter anderem für die Speicherverwaltung und die Verwaltung der Prozesse zuständig. Also auch für die Apps.
Hier kann man auch schön nachlesen wie das Zusammenspiel von Java über die Dalvik-VM mit dem Betriebssystem funktioniert.

Hmm ich habe es jetzt gelesen, bin aber nicht schlauer geworden. Wo kann ich zum Beispiel finden, dass der/ein Linux-Kernel Prozesse abschließt, wenn nicht genügend Ressourcen zur Verfügung stehen. So wo ich es stehe, ist es Teil der Dalvik-VM.

Selbstverständlich übernimmt aber der Linuxkernel die Adressierung des Speichers.

Ob Android jetzt Linux ist oder nicht ist mir ziemlich egal. Fakt ist, dass einige eigene Wege gegangen werden.
 
Tja, dann hast du wohl diesen Satz eindeutig überlesen:

Die Architektur von Android baut auf dem Linux-Kernel 2.6 auf.[12] Er ist für Speicherverwaltung, Prozessverwaltung und die Netzwerkkommunikation zuständig. Außerdem bildet er die Hardwareabstraktionsschicht für den Rest der Software und stellt die Gerätetreiber für das System.
 
Nein, den Satz hatte ich gelesen.
Einen 2.6. Kernel benutze ich mit meinem Laptop auch schon lange, dieser kommt aber nicht auf die Idee ungefragt irgendwelche Prozesse zu killen.

Also nochmal die Frage, wo steht, dass Linux Prozesse einfach gekillt werden? Das hat doch höchstens sehr am Rande mit der Speicher und Prozessverwaltung zu tun.
 
Selbstverständlich wird der Kernel angepasst, er soll ja auch auf den mobilen Plattformen laufen. Dennoch ist er für die Speicher- und Prozessverwaltung zuständig. Es steht ja auch in dem Artikel: Basiert auf dem Kernel ........

Gesendet von meinem Desire HD mit der Android-Hilfe.de-App
 
Natürlich ist der Kernel für die Speicherverwaltung ("also den Programmen sagen wo sie ihren nutzbaren Speicher finden") und die Prozessverwaltung ("also denn Programmen sagen, wann sie den Prozessor benutzen dürfen") zuständig - dies habe ich nie bezweifelt. Dennoch habe ich keine Quelle dafür gefunden, dass der Kernel die Initiative zum Killen von Prozessen ergreift.
Diesen Link habe ich ja schon mal gegeben: Processes and Threads | Android Developers
Bei Lebenszyklus von Prozessen werden nur java-apps aufgeführt. Dennoch ist der Link ausführlicher als der von Dir gegebene.
Mit welcher Priorität werden denn Linux Prozesse gekillt, D3f3kt? Hierzu habe ich noch nie was gelesen. Auch zeigt mir das Telefon Apps, die noch einen Linuxprozess laufen haben, aber keinen java Prozess, als nicht laufend an. Daher bin ich davon ausgegangen, dass diese Prozesse nie mehr angefasst werden. Schadsoftware würde ich auf alle Fälle so schreiben, weil sie so zumindest von Taskmanagern nicht erreicht wird.
Diese Frage wer das killen von Prozessen initiiert ist also durchaus wichtig um zu wissen, ob ein ab- und anschalten des Smartphones sinnvoll ist. Und diese Frage wurde noch mit belegen beantwortet.
 
Also nach 10 Sekunden googlen habe ich das hier gefunden:

Programming 4 fun » Wie funktioniert Android? Teil 1: Das Memory-Management

Es ist vielleicht nicht 100% technisch Erklärt, aber immerhin ist es hier gut beschrieben wie die Reihenfolgen und die Prioritäten liegen, wann Android welches Programm beendet. Da gibt es auch einen schönen Tipp in welcher Datei das wohl geregelt wird. ^^

/drivers/misc/lowmemorykiller.c
 
Zuletzt bearbeitet:
D3f3kt schrieb:
Also nach 10 Sekunden googlen habe ich das hier gefunden:

Wenn eine App “geschlossen” wird durch drücken des “Back”-Button bzw. durch auslösen der “Home”-Taste wird der Prozess in den “Background”-Mode versetzt.
Das bedeutet, der Status des Prozesses wird gespeichert, sodass bei einer Reaktivierung der ursprüngliche Zustand wiederhergestellt werden kann.
Sorry, genau das bezweifle ich! Android speichert eben NICHT den Status des Prozesses, sondern schickt dem Prozess (der Task/dem Job) nur eine Nachricht (einen Event/ruft eine Callback-Funktion), dass es jetzt in den Hintergrund geschickt wird und ab sofort jederzeit beendet werden kann (hart).

Wenn das Programm sauber ist, reagiert es auf diesen Event, und speichert seine Daten ab. Ich bin mir sicher, dass es jede Menge tolle, vom Desktop portierte Programme gibt, die das nicht machen (ist am Desktop-PC nicht notwendig). Diese (unsauberen) Programme werden Daten verlieren, wenn sie von Android (automatisch, weil sie im Hintergrund sind) beendet werden (z. B. aufgrund von Speichermangel).
 
Johan schrieb:
Sorry, genau das bezweifle ich! Android speichert eben NICHT den Status des Prozesses, sondern schickt dem Prozess (der Task/dem Job) nur eine Nachricht (einen Event/ruft eine Callback-Funktion), dass es jetzt in den Hintergrund geschickt wird und ab sofort jederzeit beendet werden kann (hart).
...

Da hast Du recht. Dieses Wissen hilft im Falle dieses Threads aber lediglich den Text als nicht seriös zu erkennen. Dennoch werden wohl mit der angegebenen Datei (Kernel-Modul?) die Regeln zum beenden von Prozessen festgelegt. Leider kann ich die Datei erstmal nicht lesen (vielleicht mit sehr großem Zeitaufwand), da ich quasi keine C-Kenntnisse habe.
Für die Frage, ob ein Neustart hilfreich ist, steckt in den Regeln aber wichtiges Wissen.
 
Also Leute, ich klinke mich jetzt aus, bevor ich Platze. Ich suche, poste Links, suche hier Informationen zusammen die IHR wissen wollt (Ich kann auch nicht alles wissen), und egal was man findet, postet, es kommt immer ein: Glaub ich nicht, bezweifel ich, das kann nicht sein.

Hey, ich finde diese Infos auch nur, und da sind teilweise Seiten dabei, auf denen Informationen veröffentlicht werden von Leuten, die durchaus auch Ahnung haben.

Wenn ihr alles anzweifelt und nichts glauben wollt, ohne es aber selbst dementieren zu können, dann macht was ihr wollt. Wenn ihr glaubt es ist anders, beweist es und tragt die Infos hier vor. Ansonsten..... viel Spaß.

Fragt bei den Android-Entwicklern nach, dann habt ihr eure Antwort ganz genau.
 
Hallo Leute!

Bin seit ca. 1 Stunde stolzer Besitzer eines Archos 80 G9 Tablets :)
Bis jetzt bin ich rundum zufrieden mit dem Teil, doch wie kann ich den RAM Speicher leeren? Also ich meine die Programme die im Hintergrund laufen, die will ich schließen, doch wie geht das? Bin neu in der Android Welt. Kenne mich sonst nur mit iOS aus *duck&weg* :D
Achja.. ich habe schon gesucht und die Task Killer App gefunden, diese kann ich aber nicht auf dem Archos installieren. Gibt es ähnliche Apps?

Gruß


EDIT: Jetzt geht es doch, wtf?
 
Zuletzt bearbeitet:

Ähnliche Themen

MSSaar
Antworten
8
Aufrufe
573
susisunny
susisunny
nOOby
Antworten
6
Aufrufe
234
stru65
S
MQ6
Antworten
3
Aufrufe
331
ses
ses
Zurück
Oben Unten