web-dev-qa-db-fra.com

Taille du tas Android sur différents téléphones/appareils et versions de système d'exploitation

Est-ce que quelqu'un sait si la taille du tas sur les téléphones Android est une valeur constante en fonction de ce qui est défini dans la version du système d'exploitation ou s'il s'agit d'un paramètre que les producteurs de téléphones peuvent choisir?

La taille du segment de mémoire est-elle proportionnelle à la quantité de RAM sur le téléphone?

Je n'ai trouvé que des articles dans lesquels les gens disent que la taille de tas d'une application est de 16 Mo. Cependant, ces articles sont un peu vieux. D'après ce que je vois, par exemple, la taille des segments de mémoire varie entre 20 et 24 millions d'un modèle spécifique. Ce téléphone a 768M de RAM.

70
Eric Nordvik

Est-ce que quelqu'un sait si la taille du tas sur les téléphones Android est une valeur constante en fonction de ce qui est défini dans la version du système d'exploitation ou s'il s'agit d'un paramètre que les producteurs de téléphones peuvent choisir?

Techniquement, c'est un paramètre que les producteurs de téléphones peuvent choisir. Android est open source. Je ne me souviens pas du document de définition de la compatibilité énonçant les exigences de taille de segment de mémoire, bien que je n’aie pas consulté récemment.

La taille du segment de mémoire est-elle proportionnelle à la quantité de RAM sur le téléphone?

Non, il a tendance à s'appuyer davantage sur la résolution de l'écran, car les écrans à haute résolution ont tendance à vouloir manipuler des images bitmap plus volumineuses. Google recommande donc de réduire la taille des segments de mémoire que les fabricants de périphériques respecteront.

Je n'ai trouvé que des articles dans lesquels les gens disent que la taille de tas d'une application est de 16 Mo.

Rechercher StackOverflow sur [Android] "heap size" fait apparaître cette réponse .

48
CommonsWare

Quelques informations supplémentaires sur le périphérique extraites des fichiers build.prop (adb -d pull /system/build.prop):

Téléphones (version Android):

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

Tablettes (version Android):

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

Non seulement les fabricants de téléphones, mais toute personne qui crée une version du système d'exploitation Android, peut spécifier la taille de segment de mémoire maximale autorisée, en fonction des besoins spécifiques de leurs appareils. Certaines racines Android, telles que CyanogenMod, permettent même à l'utilisateur de sélectionner la taille du segment elle-même en tant que paramètre.

Vous pouvez détecter la taille de tas maximale autorisée à l'aide de la méthode 

Runtime.getRuntime().maxMemory();

Des informations supplémentaires sur ce sujet sont disponibles ici .

Si votre application nécessite normalement plus de 16 Mo de mémoire, une approche suggérée consisterait à définir dans votre manifeste un niveau de version minimale du système d'exploitation garantissant que l'écrasante majorité de ceux qui téléchargent votre application disposent au minimum de la quantité dont vous avez besoin. un moyen de dégrader vos fonctionnalités de manière élégante, de manière à réduire les besoins en mémoire de forme en fonction des besoins, jusqu'à un niveau de base de 16 Mo, pour le petit nombre d'utilisateurs disposant de moins de la quantité optimale de mémoire qui passe à travers ce crible.

Voici quelques figures montrant l'association du téléphone RAM avec la version du système d'exploitation (basée sur le système d'exploitation actuel et non d'origine). Je pense qu'un téléphone disposant d'au moins 1 Go de RAM aura presque toujours plus de 16 Mo de mémoire. Notez que les pourcentages indiqués ici correspondent au nombre de téléphones modèles prenant en charge la mémoire indiquée, et non au nombre total de téléphones utilisés, ce qui peut être assez biaisé par rapport à certains modèles. Ces chiffres ont été obtenus en branchant les entrées dans le Finder de téléphone suivant (qui inclut 1500 modèles de téléphones Android). Il ne s'agit donc que de chiffres approximatifs: http://www.gsmarena.com/search.php3

Pourcentage de téléphones modèles disposant d'au moins 1 Go de RAM, par version actuelle du système d'exploitation (et non par la version au lancement):

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

Vous devriez pouvoir vérifier la taille maximale de VM par:

getprop dalvik.vm.heapsize

au terminal Android (connectbot ou adb Shell, etc.). Il est possible de remonter en lecture-écriture et de définir la taille de segment de mémoire dans le fichier build.prop. (Assurez-vous que la récupération est installée afin de pouvoir la réinitialiser si vous la rendez trop petite par inadvertance, elle ne démarrera pas).

10
NoBugs

Le "budget VM" qu'une application est autorisée à utiliser varie d'un périphérique à l'autre. Les tablettes permettent généralement un budget plus important que les téléphones.

Voici quelques VM tailles de budget que j'ai trouvées pour différents appareils.

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

(Remarque: si vous avez trouvé différemment, faites le moi savoir)

9
dustmachine

Il existe en fait une mémoire d'application minimale définie qui dépend de la taille et de la densité de l'écran:

Les appareils mobiles ont généralement des ressources système limitées. Android Les appareils ne peuvent disposer que de 16 Mo de mémoire pour un seul application. Document de définition de la compatibilité Android (CDD), Section 3.7. Compatibilité machine virtuelle donne le minimum requis mémoire d'application pour différentes tailles et densités d'écran . Les applications doivent être optimisées pour fonctionner avec cette mémoire minimale limite. Cependant, gardez à l'esprit que de nombreux périphériques sont configurés avec une valeur plus élevée limites.

Cité de: http://developer.Android.com/training/displaying-bitmaps/index.html

Mais comme d’autres l’ont dit, chaque fabricant d’appareil décide de la valeur réelle de l’appareil. Elle peut donc être supérieure à celle-ci (mais pas inférieure).

Le document de définition de compatibilité (CDD) mentionné énumérant la configuration minimale requise pour chaque version d'Android: https://source.Android.com/compatibility/cdd.html

Pour la dernière version d'Android, une version html est disponible, et nous pouvons créer un lien direct vers la section de mémoire d'exécution à cet endroit: https://source.Android.com/compatibility/Android-cdd.html#3_7_runtime_compatibility

Pour Android 2.3:

Implémentations de l'appareil avec des écrans classés comme moyen- ou basse densité DOIT configurer Dalvik pour allouer au moins 16 Mo de mémoire à chaque application. Implémentations de périphérique avec des écrans classés comme haute densité ou très haute densité DOIT configurer Dalvik pour allouer au moins 24 Mo de mémoire pour chaque application. Notez cet appareil les implémentations PEUVENT allouer plus de mémoire que ces chiffres.

Pour les versions modernes, il existe plutôt un tableau où cela dépend de la densité de l'écran, etc.:

Pour Android 4.2, exemple de ligne de cette table:

taille petite/normale/grande et densité xhdpi: 64 Mo

Pour Android 6, extrayez:

xhdpi petit/normal: 80 Mo

xxhdpi petit/normal: 128 Mo

xxxhdpi petit/normal: 256 Mo

Il existe également un tableau pour les autres versions d'Android 2.x, 4.x, 5.x et 6 dans ces documents (voir le lien CDD ci-dessus).

Reportez-vous à ce lien Google pour trouver facilement des densités d'écran, etc., pour des appareils spécifiques: https://design.google.com/devices/

Ces données fonctionnent pour moi . Sélectionnez Emulator Tablet TV Android RAM 1536 Mo VM HEAP 16 Mo Stockage interne 800 MoStudio géré 100

0
Manibala Sinha