Tipos de memoria de Android (RAM v Memoria interna)
En un hilo separado he demostrado mi ignorancia de los tipos de memoria preguntando sobre la mejor manera de copiar un archivo en "memoria interna" y se aconsejó que esto no era una buena idea y que sería mejor leer el archivo en "RAM" . Ahora estoy tratando de entender cómo estos dos tipos de memoria están relacionados y cómo se pueden utilizar.
Entiendo que "la memoria interna se percibe como el flash que se utiliza para almacenar APKs, imágenes de ROM, etc."
- Reciclaje de bitmaps
- Leyendo LeakCanary Log
- API básica de Android v2 MapActivity outOfMemory con 10 marcadores
- Eclipse - diseñador de GUI Android increíblemente lento y con mucha memoria
- Fuga de memoria MediaControllerCompat
La especificación para mi héroe de HTC dice que hay "ROM: 512MB, RAM: 288MB" sin la indicación de cómo la RAM se subdivide.
En el teléfono, la página "Ajustes" -> "Almacenamiento SD y teléfono" se refiere simplemente a "Tarjeta SD" y "Almacenamiento telefónico interno" y para este último sólo muestra una cantidad para "Espacio disponible".
La Referencia de Android para almacenamiento de datos menciona "Almacenamiento interno". Este es un lugar donde "puedes guardar archivos". La página también menciona archivos de base de datos SQLite que creo que se pueden almacenar en el "almacenamiento interno". Sin embargo, la página no parece ofrecer ninguna explicación de la subdivisión de RAM entre el almacenamiento interno y otro tipo (presumiblemente más dinámico).
¿Existe algún tipo de división dinámica de la RAM total (288 MB en el héroe) en dos subdivisiones que se pueden utilizar de diferentes maneras? Si es así, ¿en qué parte de la documentación de Android se explica esto?
- ¿Qué es lo que hace Bitmap # recycle () en Android Honeycomb?
- Bitmaps de Android en la memoria de fugas xml?
- Android java.lang.OutOfMemoryError?
- Cómo limpiar los recursos de mapa de bits
- Servicio remoto, pérdidas de actividad al girar
- Android: acelerómetro de lectura sin asignación de memoria?
- reutilizar las mismas instancias de Diálogos
- Servicio de asignar un montón de memoria?
Entiendo que "la memoria interna se percibe como el flash que se utiliza para almacenar APKs, imágenes de ROM, etc."
La especificación para mi héroe de HTC dice que hay "ROM: 512MB, RAM: 288MB" sin la indicación de cómo la RAM se subdivide.
La memoria RAM no está "subdividida" en ningún tipo de base permanente. RAM se utiliza mediante la ejecución de los procesos en la medida de lo necesario. Lo más importante para las aplicaciones de SDK es que hay un límite superior en cuanto a la cantidad de memoria RAM que un proceso puede consumir – en su héroe, debe ser de 16 MB.
En el teléfono, la página "Ajustes" -> "Almacenamiento SD y teléfono" se refiere simplemente a "Tarjeta SD" y "Almacenamiento telefónico interno" y para este último sólo muestra una cantidad para "Espacio disponible".
El "almacenamiento interno del teléfono" se refiere a la parte del espacio de destello de a bordo reservada para archivos APK, bases de datos, preferencias y otros archivos locales.
La página también menciona archivos de base de datos SQLite que creo que se pueden almacenar en el "almacenamiento interno".
Correcto.
Sin embargo, la página no parece ofrecer ninguna explicación de la subdivisión de RAM entre el almacenamiento interno y otro tipo (presumiblemente más dinámico).
RAM no tiene nada que ver con el almacenamiento interno.
¿Existe algún tipo de división dinámica de la RAM total (288 MB en el héroe) en dos subdivisiones que se pueden utilizar de diferentes maneras?
No.
Vamos a dar un paso atrás.
RAM es RAM es RAM. RAM en su teléfono no es significativamente diferente de la memoria RAM en su escritorio, su portátil, su netbook, etc Esta construcción se ha mantenido relativamente estable en su uso durante las últimas décadas, sobre todo una vez que nos escapamos del mainframe. Los programas en ejecución (SO y aplicaciones de usuario final) consumen RAM, pero sólo mientras se ejecutan. Y RAM se limpia en un reinicio, en los teléfonos, tanto como en su escritorio.
Ahora, su computadora de escritorio, notebook o netbook promedio también tiene un disco duro para almacenamiento más permanente de lo que ofrece RAM. No hay un término absoluto para el equivalente en Android – que tienden a utilizar "almacenamiento flash a bordo" para él, otros lo llaman "almacenamiento interno", aunque como verá, este último término está lleno de confusión. Al igual que un disco duro, el almacenamiento flash a bordo se utiliza para el sistema operativo (aka, firmware en Android), programas de usuario final (también conocido como archivos APK en Android) y datos de usuario final (aka, bases de datos, Y otros archivos almacenados donde se encuentra getFilesDir()
).
El almacenamiento flash integrado se divide en unas pocas particiones. Si usted es un usuario de Windows, las particiones es básicamente decir "su disco duro se rompe en C :, E :, y F: unidades". En Android, una partición está dedicada al firmware, y otra partición (la "partición de datos") está dedicada a los programas y datos del usuario final. (NOTA: la descripción precedente no es del todo exacta, pero las discrepancias están más allá del alcance de esta respuesta).
Por lo tanto, con todo eso en mente:
- Su 512MB de ROM es el almacenamiento flash a bordo, retrocediendo al antiguo "flash ROM"
- Su "Almacenamiento de teléfono interno" en los ajustes que el espacio disponible en la partición de datos para aplicaciones de usuario final y datos (una de las razones por las que no uso este término para referirse a la memoria flash a bordo como un todo)
- Su "tarjeta SD" se refiere más genéricamente a Android como almacenamiento externo, que en muchos dispositivos es una forma de tarjeta SD, aunque en realidad podría ser sólo otra partición del almacenamiento flash a bordo designado como servicio en el papel de externo almacenamiento