web-dev-qa-db-de.com

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

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

Ist die Heap-Größe proportional zur Menge von RAM auf dem Telefon?

Ich habe nur Artikel gefunden, in denen Leute sagen, dass die Heap-Größe einer Anwendung 16M beträgt. Diese Artikel sind jedoch etwas in die Jahre gekommen. Aus dem, was ich als Beispiel sehe, variieren die Heap-Größen bei einem bestimmten Modell zwischen 20 und 24 Millionen. Dieses Telefon verfügt über 768 MB RAM.

70
Eric Nordvik

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

Technisch ist dies eine Einstellung, für die die Telefonhersteller entscheiden können. Android ist Open Source. Ich kann mich nicht an das Dokument zur Kompatibilitätsdefinition erinnern, in dem die Anforderungen für die Heapgröße beschrieben werden, obwohl ich in letzter Zeit nicht nachgesehen habe.

Ist die Heap-Größe proportional zur Menge von RAM auf dem Telefon?

Nein, es basiert eher auf der Bildschirmauflösung, da Bildschirme mit höherer Auflösung dazu neigen, größere Bitmaps zu manipulieren. Daher gibt Google Heap-Größenempfehlungen, 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 16M beträgt.

Durchsuchen von StackOverflow in [Android] "heap size" wird diese Antwort angezeigt.

48
CommonsWare

Weitere Geräteinformationen aus build.prop-Dateien (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/512MB
  • Google Nexus 5 (4.4, xxhdpi) = 8/192/512MB
  • Samsung Galaxy S6 SM-G920W8 (7.0) = 8/256/512MB

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
121
spatialist

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 der Geräte festlegen. Bei einigen Android-Roots, beispielsweise CyanogenMod, kann der Benutzer sogar die Heap-Größe selbst als Einstellung auswählen.

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

Runtime.getRuntime().maxMemory();

Weitere Informationen zu diesem Thema sind verfügbar hier .

Wenn Ihre App normalerweise mehr als 16 MB Heap benötigt, empfiehlt es sich, in Ihrem Manifest einen Mindestversionsstand für das Betriebssystem festzulegen, der sicherstellt, dass die überwiegende Mehrheit der Benutzer, die Ihre App herunterladen, mindestens die Menge hat, die Sie benötigen, und dann finden Eine Möglichkeit, Ihre Funktionalität auf eine Art und Weise zu verringern, die Ihre Heap-Anforderungen nach Bedarf bis auf ein Basis-Level von 16 MB reduziert, für die kleine Anzahl von Benutzern mit weniger als Ihrer optimalen Menge an Heap, die durch dieses Sieb fallen.

Hier einige Abbildungen, die die Zuordnung des Telefons RAM zur Betriebssystemversion zeigen (basierend auf dem aktuellen, nicht dem ursprünglichen Betriebssystem). Ich glaube, dass ein Telefon mit mindestens 1 GB RAM fast immer mehr als 16 MB Heap hat. Beachten Sie, dass die Prozentangaben hier für die Anzahl der Modelle des angegebenen Speichers gelten, nicht für die Gesamtzahl der verwendeten Telefone, die bei bestimmten Modellen ziemlich schief sein kann. Diese Nummern wurden durch Einstecken von Eingaben in den folgenden Telefon-Finder (der 1500 Android-Telefonmodelle umfasst) ermittelt. Es handelt sich also nur um Zahlen: http://www.gsmarena.com/search.php3

Prozentsatz von Telefonen models 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
20
Carl

Sie sollten mit dem max vm Heapsize überprüfen können:

getprop dalvik.vm.heapsize

bei Android Terminal (ConnectBot oder adb Shell usw.). Es ist möglich, wieder montiert Schreib-Lese-und die Heap-Größe in der build.prop Datei als auch gesetzt. (Stellen Sie sicher, dass Sie die Wiederherstellung installiert haben, so können Sie es Satz wieder, wenn Sie versehentlich zu klein machen, wird es nicht booten).

10
NoBugs

Das „VM Budget“, die eine Anwendung erlaubt ist, variiert je nach Gerät von Gerät zu verwenden. Tabletten erlauben typischerweise ein größeres Budget als Telefone.

Hier sind einige VM Budgetgrößen I für verschiedene Geräte gefunden habe.

  • G1 = 16 Mb 
  • Droid = 24 Mb 
  • Nexus One = 32 Mb 
  • Xoom = 48 Mb
  • GalaxyTab = 64 Mb.

(Hinweis: Wenn Sie anders gefunden haben, lassen Sie mich wissen)

9
dustmachine

Es ist tatsächlich ein definierter Mindestanwendungsspeicher definiert, der von der Bildschirmgröße und -dichte abhängt:

Mobile Geräte verfügen normalerweise über eingeschränkte Systemressourcen. Android Für Geräte kann nur ein Speicher von 16 MB verfügbar sein Anwendung. Das Dokument zur Kompatibilitätsdefinition von Android (CDD), Abschnitt 3.7. Virtual Machine Compatibility gibt das erforderliche Minimum an Anwendungsspeicher für verschiedene Bildschirmgrößen und -dichten . Anwendungen sollten so optimiert werden, dass sie unter diesem minimalen Arbeitsspeicher ausgeführt werden können Grenze. Denken Sie jedoch daran, dass viele Geräte mit höherem .__ konfiguriert sind. Grenzen.

Zitat von: http://developer.Android.com/training/displaying-bitmaps/index.html

Wie andere jedoch bereits festgestellt haben, entscheidet jeder Gerätehersteller über den tatsächlichen Wert des Geräts. Er könnte also größer sein (jedoch nicht kleiner).

Die erwähnte Kompatibilität Definition Document (CDD) Auflistung der Mindestanforderungen für jede Version von Android: https://source.Android.com/compatibility/cdd.html

Für die neueste Version von Android gibt es eine html verison zur Verfügung, und wir können dort direkt verknüpfen Abschnitt auf die Laufzeitspeicher: https://source.Android.com/compatibility/Android-cdd.html#3_7_runtime_compatibility

Für Android 2.3:

Geräteimplementierungen mit Bildschirmen, die als medium- oder .__ klassifiziert sind. low-density MUSS Dalvik so konfigurieren, dass mindestens 16 MB Speicher .__ zugewiesen werden. zu jeder Anwendung. Geräteimplementierungen mit als .__ klassifizierten Bildschirmen high-density oder extra-high-density MUSS Dalvik so konfigurieren, dass Mindestens 24 MB Speicher für jede Anwendung. Beachten Sie dieses Gerät Implementierungen KÖNNEN möglicherweise mehr Speicherplatz zuweisen als diese Zahlen.

Für die modernen Versionen gibt es stattdessen eine Tabelle, in der es von der Bildschirmdichte usw. abhängt:

Für Android 4.2 Beispielzeile aus dieser Tabelle:

klein/mittel/groß Größe und xhdpi Dichte: 64MB

Für Android 6 extrahiere:

klein/Normal XHDPI: 80 MB

klein/normal xxhdpi: 128MB

klein/normal xxxhdpi: 256MB

Es gibt eine Tabelle für die andere Android 2.x, 4.x, 5.x und 6 Versionen auch in diesen Dokumenten (siehe CDD Link oben).

Wenden Sie sich an dieser Google-Verbindung auf einfache Weise Rasterdichten usw. für bestimmte Geräte zu finden: https://design.google.com/devices/

Diese Daten können für mich arbeiten . Wählen Sie Emulator Tablet Android TV RAM 1536MB VM HEAP 16MB Interner Speicher 800MBStudio 100 -organisiert

0
Manibala Sinha