web-dev-qa-db-fra.com

Android types de mémoire (RAM v Mémoire interne)

Sur un thread séparé J'ai démontré mon ignorance des types de mémoire en demandant la meilleure façon de copier un fichier dans la "mémoire interne" et on m'a dit que ce n'était pas une bonne idée et qu'il valait mieux lire le fichier dans "RAM". J'essaie maintenant de comprendre comment ces deux types de mémoire sont liés et comment ils peuvent être utilisés.

Je comprends que "la mémoire interne est perçue comme le flash utilisé pour stocker les fichiers APK, ROM, etc."

Les spécifications de mon HTC Hero indiquent qu'il y a "ROM: 512 Mo, RAM: 288 Mo" sans aucune indication sur la façon dont le RAM est subdivisé.

Sur le téléphone, la page "Paramètres" -> "Stockage SD et téléphone" fait simplement référence à "Carte SD" et "Stockage interne du téléphone" et pour cette dernière, il n'y a qu'un montant pour "Espace disponible".

Le Android Reference for Data Storage mentionne "Internal Storage". Ceci est un endroit où "vous pouvez enregistrer des fichiers". La page mentionne également les fichiers de base de données SQLite qui je pense peut être stocké dans le "stockage interne". Cependant, la page ne semble pas offrir d'explication sur la subdivision de RAM entre le stockage interne et un autre type (probablement plus dynamique).

Existe-t-il une sorte de division dynamique du total RAM (288 Mo sur le héros) en deux sous-divisions qui sont utilisables de différentes manières? Si oui, où dans le Android est-elle expliquée?

22
prepbgg

Je comprends que "la mémoire interne est perçue comme le flash utilisé pour stocker les fichiers APK, ROM, etc."

Les spécifications de mon HTC Hero indiquent qu'il y a "ROM: 512 Mo, RAM: 288 Mo" sans aucune indication sur la façon dont le RAM est subdivisé.

Le RAM n'est pas "subdivisé" sur aucune sorte de base permanente. RAM est utilisé par l'exécution des processus selon les besoins. La plus grande chose pour le SDK applications à noter est qu'il existe une limite supérieure quant à la quantité RAM qu'un processus peut consommer - sur votre Hero, il devrait être de 16 Mo.

Sur le téléphone, la page "Paramètres" -> "Stockage SD et téléphone" fait simplement référence à "Carte SD" et "Stockage interne du téléphone" et pour cette dernière, il n'y a qu'un montant pour "Espace disponible".

Le "stockage interne du téléphone" fait référence à la partie de l'espace flash intégré réservée aux fichiers APK, bases de données, préférences et autres fichiers locaux.

La page mentionne également les fichiers de base de données SQLite qui, je pense, peuvent être stockés dans le "stockage interne".

Correct.

Cependant, la page ne semble pas offrir d'explication sur la sous-division de RAM entre le stockage interne et un autre type (probablement plus dynamique).

La RAM n'a rien à voir avec le stockage interne.

Existe-t-il une sorte de division dynamique du total RAM (288 Mo sur le Hero) en deux sous-divisions qui peuvent être utilisées de différentes manières?

Non.


Revenons en arrière.

La RAM est RAM est RAM. RAM sur votre téléphone n'est pas significativement différente de RAM sur votre bureau, votre ordinateur portable, votre netbook, etc. Cette construction est restée relativement stable dans son utilisation au cours des dernières décennies, en particulier une fois que nous nous sommes échappés du mainframe. Les programmes en cours d'exécution (OS et applications d'utilisateur final) consomment de la RAM, mais uniquement pendant leur exécution. Et = RAM est effacé lors d'un redémarrage, sur les téléphones autant que sur votre bureau.

Maintenant, votre ordinateur de bureau, votre ordinateur portable ou votre netbook moyen dispose également d'un disque dur pour un stockage plus permanent que les offres RAM. Il n'y a pas de terme absolu pour l'équivalent dans Android = - J'ai tendance à utiliser le "stockage flash intégré" pour cela, d'autres l'appellent "stockage interne", mais comme vous le verrez, ce dernier terme est semé de confusion. Tout comme un disque dur, le stockage flash intégré est utilisé pour le système d'exploitation (aka, firmware sous Android), les programmes d'utilisateur final (aka, les fichiers APK dans Android) et les données d'utilisateur final (aka, bases de données, préférences partagées et autres fichiers stockés où getFilesDir() est situé).

Le stockage flash intégré est divisé en quelques partitions. Si vous êtes un utilisateur Windows, les partitions indiquent essentiellement "votre disque dur est divisé en disques C :, E :, et F:". Sous Android, une partition est dédiée au firmware et une autre partition (la "partition de données") est dédiée aux programmes et données de l'utilisateur final. (REMARQUE: la description précédente n'est pas entièrement exacte, mais les écarts sont bien au-delà de la portée de cette réponse).

Donc, avec tout cela à l'esprit:

  • Votre 512 Mo de ROM est le stockage flash intégré, rappelant l'ancien terme "flash ROM"
  • Votre "Stockage interne du téléphone" dans les paramètres de l'espace disponible dans la partition de données pour les applications et les données des utilisateurs finaux (l'une des raisons pour lesquelles je n'utilise pas ce terme pour désigner le stockage flash intégré dans son ensemble)
  • Votre "carte SD" est désignée de manière plus générique dans Android comme stockage externe, qui sur de nombreux appareils est une forme de carte SD, bien qu'il puisse s'agir simplement d'une autre partition du flash intégré) stockage désigné comme servant de rôle de stockage externe
40
CommonsWare