Android-Heap-Größe auf verschiedenen Telefonen/Geräten und Betriebssystemversionen

Lesezeit: 8 Minuten

Android Heap Grose auf verschiedenen TelefonenGeraten und Betriebssystemversionen
Eric Nordvik

Weiß jemand, ob die Heap-Größe auf Android-Telefonen ein konstanter Wert ist, je nachdem, was in der Betriebssystemversion eingestellt ist, oder ob dies eine Einstellung ist, über die die Telefonhersteller entscheiden können?

Ist die Heap-Größe proportional zur RAM-Größe des Telefons?

Ich habe nur Artikel gefunden, in denen Leute sagen, dass die Heap-Größe einer Anwendung 16 MB beträgt. Allerdings sind diese Artikel schon etwas älter. So wie ich es sehe, variieren die Heap-Größen bei einem bestimmten Modell von etwa 20 MB bis zu 24 MB. Dieses Telefon hat 768 MB RAM.

  • wenn der 30mb total heap to app ist. und wenn nur 7 MB zugewiesen sind und die verbleibenden frei sind, kann der Arbeitsspeicher von anderen Apps verwendet werden?

    – Chaitanya Chandurkar

    1. April 2013 um 18:26 Uhr

Android Heap Grose auf verschiedenen TelefonenGeraten und Betriebssystemversionen
Spatialist

Einige weitere Geräteinformationen, die aus build.prop-Dateien extrahiert wurden (adb -d pull /system/build.prop):

Telefone (Android-Version):

  • HTC Wildfire (2.2.1) = 16 MB
  • HTC Wildfire S (2.3.5) = 20 MB
  • HTC Salsa (2.3.3) = 20 MB
  • HTC Desire (2.3.3) = 32 MB
  • HTC Desire S (2.3.5) = 32 MB
  • Sprd – Richview – S111 (2.3.5) = 32 MB
  • Samsung Galaxy S GT-I9000 (2.2) = 48 MB
  • Samsung Galaxy R GT-I9103 (2.3.5) = 64 MB
  • Samsung Galaxy Y GT-S5360 (2.3.5) = 64 MB
  • Samsung Galaxy Note N7000 (4.1.2) = Heapstartsize=8m, Heapgrowthlimit=64m, Heapsize=256m
  • Samsung Galaxy S3 GT-I9300 (4.3, xhpdi) = 8/64/256 MB
  • Samsung Galaxy S4 GT-I9505 (4.4, xxhpdi) = 8/128/512 MB
  • Google Galaxy Nexus (4.3) = 8/96/256 MB
  • Google Nexus 4 (4.4, xhdpi) = 8/192/512 MB
  • Google Nexus 5 (4.4, xxhdpi) = 8/192/512 MB
  • Samsung Galaxy S6 SM-G920W8 (7.0) = 8/256/512 MB

Tablets (Android-Version):

  • Samsung Galaxy Tab GT-P1000 (2.2) = 48 MB
  • Samsung Galaxy Tab 8.9 GT-P7300 (3.2) = 5/64/288 MB
  • Samsung Galaxy Tab 10.1 GT-P7500 (3.2) = 5/64/288 MB
  • Samsung Galaxy Tab 3 10.1 GT-P5200 (4.2, mdpi) = 8/96/256 MB
  • Acer Iconia A500 (3.2.1) = 5/48/256 MB
  • Kindle Fire HD 7″ (4.0.3) = 5/48/256 MB
  • Asus Transformer Prime TF201 (4.1.1) = 5/48/256 MB
  • Nexus 10 (4.4.3) 16/192/512 MB

  • Erwähnenswert ist, dass das Manifest-Anwendungsattribut android:largeHeap="true" scheint den verfügbaren Heap-Speicherplatz vom Wert “heapgrowthlimit” auf den Wert “heapsize” zu erhöhen. Dies wird jedoch je nach Gerät variieren.

    – dokkaebi

    8. Januar 2013 um 19:07 Uhr

  • Aus einem Beitrag in xdadeveloper von h2g2: heapstartsize ist die Größe eines neuen Dalvik-VM-Heaps bei der Initialisierung. heapgrowthlimit ist die Größenbeschränkung für normale Dalvik-VM-Heaps. heapsize ist die Größenbeschränkung für Android-Apps, die android:largeHeap=true in ihrem Anwendungsmanifest angeben.

    – Yuntao

    4. Juni 2013 um 20:32 Uhr


  • in “Google Galaxy Nexus (4.3) = 8/96/256 MB”, warum gibt es mehrere Heap-Größen? 8? 96? 256?

    – Sam YC

    7. Februar 2014 um 8:05 Uhr

  • Diese Werte sind heapstartsize, heapgrowthlimit, heapsize. Sehen jeffmixon.com/… Für mehr Information.

    – Spatialist

    7. Februar 2014 um 12:18 Uhr

1646313792 34 Android Heap Grose auf verschiedenen TelefonenGeraten und Betriebssystemversionen
CommonsWare

Weiß jemand, ob die Heap-Größe auf Android-Telefonen ein konstanter Wert ist, je nachdem, was in der Betriebssystemversion eingestellt ist, oder ob dies eine Einstellung ist, über die die Telefonhersteller entscheiden können?

Technisch gesehen ist dies eine Einstellung, über die die Telefonhersteller entscheiden können. Android ist Open-Source. Ich erinnere mich nicht an das Compatibility Definition Document, in dem die Anforderungen an die Heap-Größe aufgeführt sind, obwohl ich in letzter Zeit nicht nachgesehen habe.

Ist die Heap-Größe proportional zur RAM-Größe des Telefons?

Nein, es basiert eher auf der Bildschirmauflösung, da Bildschirme mit höherer Auflösung dazu neigen, größere Bitmaps zu manipulieren, also gibt Google Empfehlungen zur Heap-Größe, an die sich die Gerätehersteller hoffentlich halten werden.

Ich habe nur Artikel gefunden, in denen Leute sagen, dass die Heap-Größe einer Anwendung 16 MB beträgt.

StackOverflow wird gesucht [android] "heap size" taucht diese Antwort auf.

  • Ja, die Antwort habe ich auch gesehen. Ich habe mich nur gefragt, ob es dazu Richtlinien gibt und ob der RAM etwas damit zu tun hat. Ich denke, wir müssen nur hoffen, dass sich die Hersteller an die Google-Richtlinien halten. Danke für deinen Beitrag. Ich habe diese Frage gestellt, weil ich eine Zunahme von OutOfMemory-Problemen für ein bestimmtes Telefon festgestellt habe.

    – Eric Nordvik

    18. März 2011 um 13:30 Uhr

1646313793 692 Android Heap Grose auf verschiedenen TelefonenGeraten und Betriebssystemversionen
Carl

Nicht nur Telefonhersteller, sondern jeder, der eine Version des Android-Betriebssystems erstellt, kann die maximal zulässige Heap-Größe basierend auf den spezifischen Anforderungen seiner Geräte angeben. Einige Android-Roots, wie CyanogenMod, erlauben es dem Benutzer sogar, die Heap-Größe selbst als Einstellung auszuwählen.

Sie können die maximal zulässige Heap-Größe mit der Methode ermitteln

Runtime.getRuntime().maxMemory();

Weitere Informationen zu diesem Thema finden Sie hier.

Wenn Ihre App normalerweise mehr als 16 MB Heap benötigt, wäre ein empfohlener Ansatz, eine Mindestversion des Betriebssystems in Ihrem Manifest festzulegen, die sicherstellt, dass die überwältigende Mehrheit derjenigen, die Ihre App herunterladen, mindestens die Menge hat, die Sie benötigen, und die Sie dann finden eine Möglichkeit, Ihre Funktionalität elegant so herabzusetzen, dass Ihre Heap-Anforderungen nach Bedarf auf ein Basisniveau von 16 MB für die kleine Anzahl von Benutzern mit weniger als Ihrer optimalen Menge an Heap reduziert werden, die durch dieses Sieb fallen.

Hier sind einige Abbildungen, die die Zuordnung des Telefon-RAM zur Betriebssystemversion zeigen (basierend auf dem aktuellen, nicht originalen Betriebssystem). Ich glaube, dass ein Telefon mit mindestens 1 GB RAM fast immer mehr als 16 MB Heap hat. Beachten Sie, dass die Prozentsätze hier für die Anzahl der Telefone gelten Modelle Unterstützung des angegebenen Speichers, nicht der gesamten verwendeten Telefone, die bei bestimmten Modellen ziemlich verzerrt sein können. Diese Zahlen wurden durch Einstecken von Eingaben in den folgenden Telefonfinder (der 1500 Android-Telefonmodelle umfasst) erhalten und sind daher nur grobe Zahlen: http://www.gsmarena.com/search.php3

Prozentsatz des Telefons Modelle mit mindestens 1 GB RAM, nach aktueller Betriebssystemversion (nicht Version beim Start):

Phones running         Percent of models having at least 1GB of RAM   Percentage of all models
4.4 and up             100 percent                                    1.5
4.3 and up             100 percent                                    2.9
4.2.x and up           74 percent                                     18.7
4.1.x and up           71 percent                                     37
4.0 and up             62 percent                                     60
2.3.x and up           57 percent                                     71
2.2 and up             44 percent                                     93
2.1 and up             44 percent                                     97
ALL OS VERSIONS:       41.5 percent                                   100

  • Wie würde eine Mindestversion des Betriebssystems helfen? Sogar KitKat 4.4 wird jetzt für Low-RAM-Geräte optimiert.

    – NoBugs

    2. Januar 2014 um 14:04 Uhr

  • @NoBugs: Leider bietet der Google Play Store derzeit keine Möglichkeit, basierend auf der Heap-Größe zu filtern, welche Geräte Ihre App sehen können, sodass weniger genaue Kriterien verwendet werden müssen, um diesen Effekt für die meisten Benutzer zu erzielen. Im Allgemeinen befinden sich spätere Betriebssystemversionen auf Geräten mit größeren Heap-Größen. Die Angabe einer höheren Version sollte also dazu führen, dass die meisten Geräte mehr verfügbaren Heap haben. Wenn Ausnahmen von dieser Regel auftreten, sollte die App ordnungsgemäß herabgesetzt werden.

    – Carl

    2. Januar 2014 um 23:52 Uhr


1646313793 375 Android Heap Grose auf verschiedenen TelefonenGeraten und Betriebssystemversionen
Keine Fehler

Sie sollten in der Lage sein, die maximale vm-Heapsize zu überprüfen mit:

getprop dalvik.vm.heapsize

am Android-Terminal (Connectbot oder Adb-Shell usw.). Es ist auch möglich, Read-Write neu zu mounten und die Heap-Größe in der build.prop-Datei festzulegen. (Stellen Sie sicher, dass Sie die Wiederherstellung installiert haben, damit Sie sie zurücksetzen können, wenn Sie sie versehentlich zu klein machen, sie startet nicht).

Das „VM-Budget“, das eine Anwendung verwenden darf, ist von Gerät zu Gerät unterschiedlich. Tablets ermöglichen in der Regel ein größeres Budget als Telefone.

Hier sind einige VM-Budgetgrößen, die ich für verschiedene Geräte gefunden habe.

  • G1 = 16 MB
  • Droide = 24 MB
  • Nexus One = 32 MB
  • Xoom = 48 MB
  • GalaxyTab = 64 MB.

(Hinweis: Wenn Sie etwas anderes gefunden haben, lassen Sie es mich wissen)

  • HTC Desire (v 2.3.3) = 32 MB Samsung Galaxy R GT-I9103 (v 2.3.5) = 64 MB

    – Spatialist

    30. März 2012 um 9:00 Uhr


1646313794 783 Android Heap Grose auf verschiedenen TelefonenGeraten und Betriebssystemversionen
Gemeinschaft

Es gibt tatsächlich einen definierten minimalen Anwendungsspeicher, der von der Bildschirmgröße und -dichte abhängt:

Mobilgeräte haben typischerweise eingeschränkte Systemressourcen. Android-Geräte können nur 16 MB Speicher für eine einzelne Anwendung zur Verfügung haben. Das Android Compatibility Definition Document (CDD), Abschnitt 3.7. Virtual Machine Compatibility gibt den erforderlichen minimalen Anwendungsspeicher für verschiedene Bildschirmgrößen und -dichten an. Anwendungen sollten so optimiert werden, dass sie unter dieser minimalen Speichergrenze ausgeführt werden. Beachten Sie jedoch, dass viele Geräte mit höheren Grenzwerten konfiguriert sind.

Zitiert aus: http://developer.android.com/training/displaying-bitmaps/index.html

Aber wie andere gesagt haben, entscheidet jeder Gerätehersteller über den tatsächlichen Wert für das Gerät, sodass er größer sein kann (aber nicht kleiner).

Das erwähnte Compatibility Definition Document (CDD) listet die Mindestanforderungen für jede Android-Version auf:
https://source.android.com/compatibility/cdd.html

Für die neueste Version von Android ist eine HTML-Version verfügbar, und wir können dort direkt auf den Abschnitt mit dem Laufzeitspeicher verlinken:
https://source.android.com/compatibility/android-cdd.html#3_7_runtime_compatibility

Für Android 2.3:

Geräteimplementierungen mit Bildschirmen, die als klassifiziert sind mittlerer oder niedriger Dichte MUSS Dalvik für die Zuweisung konfigurieren mindestens 16 MB Arbeitsspeicher
zu jeder Anwendung. Geräteimplementierungen mit Bildschirmen, die als klassifiziert sind
High-Density oder Extra-High-Density MUSS Dalvik für die Zuweisung konfigurieren
mindestens 24 MB Arbeitsspeicher zu jeder Anwendung. Beachten Sie, dass Geräteimplementierungen MÖGLICHERWEISE mehr Speicher als diese Zahlen zuweisen.

Für die modernen Versionen gibt es stattdessen eine Tabelle, in der es auf die Bildschirmdichte usw. ankommt:

Beispielzeile aus dieser Tabelle für Android 4.2:

klein / normal / groß und xhdpi-Dichte: 64 MB

Extrahieren Sie für Android 6:

kleines/normales xhdpi: 80 MB

klein/normal xxhdpi: 128 MB

kleine/normale xxxhdpi: 256 MB

In diesen Dokumenten gibt es auch eine Tabelle für die anderen Versionen von Android 2.x, 4.x, 5.x und 6 (siehe CDD-Link oben).

Beziehen Sie sich auf diesen Google-Link, um Bildschirmdichten usw. für bestimmte Geräte leicht zu finden:
https://design.google.com/devices/

  • HTC Desire (v 2.3.3) = 32 MB Samsung Galaxy R GT-I9103 (v 2.3.5) = 64 MB

    – Spatialist

    30. März 2012 um 9:00 Uhr


Android Heap Grose auf verschiedenen TelefonenGeraten und Betriebssystemversionen
Manibal Sinha

Diese Daten funktionieren bei mir. Select Emulator Tablet Android TV RAM 1536 MB VM HEAP 16 MB Interner Speicher 800 MB Vom Studio verwaltet 100

923810cookie-checkAndroid-Heap-Größe auf verschiedenen Telefonen/Geräten und Betriebssystemversionen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy