Wie viel RAM kann eine App maximal nutzen?
Bin ich sehr neugierig über diese Frage, über die Speicher-management des Android-Betriebssystemso hoffe ich für eine Recht ausführliche Antwort zu diesem Thema.
Was ich gerne wissen würde:
- Was ist der maximale Arbeitsspeicher (in Megabyte /als
Prozentsatz des gesamten RAM), dass ein Android-Anwendung (das ist nicht eine system-app) nutzen kann? - Gibt es irgendwelche Unterschiede zwischen Android-Versionen?
- Gibt es irgendwelche Unterschiede bezüglich der Hersteller von dem Gerät?
Und vor allem:
- Die " - Seite Faktoren" berücksichtigt /was hängt es ab,wenn es um das system ermitteln, wie viel RAM eine app kann zur Laufzeit (unter der Annahme, dass der Speicher maximaler pro-app ist keine statische Zahl)?
Was ich gehört habe bisher (bis 2013):
- Frühen Android-Geräte hatten eine pro-app Kappe 16MB
- Später diese Obergrenze erhöht sich auf 24 MB oder 32 MB
Was macht mich sehr neugierig:
Diese beiden Grenzen sind sehr niedrig.
Ich habe gerade vor kurzem heruntergeladen Android Task-Manager zu überprüfen, meine Geräte RAM. Was ich bemerkt habe ist, dass es Anwendungen mit um die 40-50 MB RAM, das ist offensichtlich mehr als die genannten maximalen RAM Verbrauch von sagen wir mal 32 MB. Also, wie funktioniert Android, festzustellen, wie viel RAM eine app benutzen kann? Wie ist es möglich, dass apps, die überschreiten diese Grenze?
Desweiteren habe ich bemerkt, dass einige apps von mir crash (getötet durch das system?) mit einem OutOfMemoryException bei etwa 30-40 Megabyte. Auf der anderen Seite, ich habe apps auf meinem Handy mit 100 MB und mehr nach einiger Zeit (wohl wegen memory leaks), die nicht Abstürzen oder getötet werden aus.
So es offensichtlich hängt auch von der app selbst, wenn es darum geht zu bestimmen, wie viel RAM kann geschont werden. Wie ist das möglich?
(Ich führte meine tests mit einem HTC One S mit 768 MB RAM)
Vielen Dank im Voraus für Ihre Erklärung.
Disclaimer: ich bin NICHT in Verbindung mit Android Task-Manager-app in keiner Weise.
InformationsquelleAutor der Frage Philipp Jahoda | 2013-09-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass je nach Gerät unterschiedlich.
getMemoryClass()
aufActivityManager
geben Sie den Wert für das Gerät, das der code ausgeführt wird, auf.Ja, soweit OS-Anforderungen haben im Laufe der Jahre erhöht, und die Geräte passen.
Ja, sofern die Hersteller bauen Geräte, und die Größe variiert je nach Gerät.
Ich habe keine Ahnung was "- Seite Faktoren" bedeutet.
Das ist in etwa richtig. Bildschirm-Auflösung ist ein bedeutender Faktor, da höhere Auflösungen bedeuten größere bitmaps, und so Tabletten und hochauflösende Handys haben tendenziell höhere Werte noch. Zum Beispiel, sehen Sie die Geräte mit 48 MB Haufen, und ich würde nicht überrascht sein, wenn es höhere Werte als das.
Du davon ausgehen, dass der Autor dieser app weiß, was (s)er tut. Wenn man bedenkt, dass die Speichernutzung der app ist schwierig für ein core-Android-Ingenieur zu bestimmenwürde ich nicht davon ausgehen, dass die app in Frage, ist notwendigerweise die Bereitstellung besonders genaue Ergebnisse.
Dass gesagt wird, nativen code (NDK) nicht unter die heap-Grenze. Und seit Android 3.0, apps können auf Anfrage einen "großen Haufen", in der Regel in den Hunderten von MB, aber das wird als schlechte form für die meisten apps.
Bedenken, dass die Android-Müll-Sammler ist nicht a compacting garbage collector. Die Ausnahme sollte wirklich
CouldNotFindSufficientlyLargeBlockOfMemoryException
aber das war wohl als zu wortreich.OutOfMemoryException
bedeutet, dass Sie konnte Sie nicht zuordnen, Ihre angeforderten blocknicht, dass Sie erschöpft Ihre heap ganz.InformationsquelleAutor der Antwort CommonsWare
Memory limits pro app sind hier je nach Display-Größe und Android-version: https://drive.google.com/file/d/0B7Vx1OvzrLa3Y0R0X1BZbUpicGc/view?usp=sharing
Quelle: Android-Kompatibilität Downloads http://source.android.com/compatibility/downloads.html;
Compatibility Definition Document (CDD), Abschnitt Virtuelle Maschine, Kompatibilität oder der Runtime-Kompatibilität
InformationsquelleAutor der Antwort