¿Qué es la RAM virtual en Android y debería importarte?

Además de los enormes megapíxeles de la cámara y las pantallas de alta frecuencia de actualización, la mayor tendencia en el mundo de los teléfonos inteligentes parece ser la RAM virtual. Algunos se refieren a ella como expansión de RAM dinámica, mientras que otros la llaman RAM extendida. Independientemente de cómo se llame, la idea sigue siendo la misma. Permita que los usuarios usen parte de su almacenamiento como RAM para ayudar a realizar múltiples tareas.

Discutiremos en esta guía cómo funciona la administración de memoria en Android y cómo la idea de RAM virtual difiere de ella. Intentaremos reflexionar sobre si se requiere RAM virtual en Android o no. Vamos a por ello.

Cómo funciona la gestión de memoria en Android

Lo primero es lo primero, es importante comprender cómo Android administra su memoria. Dentro de Android, hay 3 tipos de memoria. Primero está su RAM, luego tiene zRAM y finalmente su almacenamiento. La RAM es el módulo de memoria básico dentro del cual se ejecutan todas las aplicaciones. Luego está su almacenamiento integrado, ya sea UFS o eMMC en dispositivos económicos. Finalmente, tenemos zRAM. Esencialmente, zRAM es una partición dentro de la RAM.

La idea detrás de zRAM es que los datos de baja prioridad en la RAM se comprimen y almacenan dentro de zRAM. Debido a que la RAM es cualquier día más rápida que su almacenamiento normal, tener datos comprimidos dentro de zRAM, que es parte de la RAM, seguirá siendo más rápido que acceder a ellos desde su almacenamiento, incluso si cuenta los tiempos de compresión y descompresión.

Ahora que hemos establecido los 3 tipos diferentes de memoria disponibles para Android, comprendamos cómo el sistema operativo lo maneja todo. Así que Android hace uso de técnicas de paginación. La forma en que funciona es que la RAM se divide en páginas, donde cada página suele ser de 4 KB. Ya sea que esa página sea gratuita o se use activamente, se combinan para mostrar RAM usada y RAM sin usar, respectivamente. Entonces, la tarea del kernel es convertir la memoria usada en memoria libre. Lo hace cambiando los datos de esas páginas usadas a su almacenamiento.

¿Qué es la paginación y cómo funciona?

Para entender cómo funciona, comprendamos los tipos de páginas. Puede clasificar las páginas en dos tipos: páginas limpias y sucias. Las páginas limpias tienen una copia sin modificar guardada en el espacio de almacenamiento. Mientras tanto, las páginas sucias tienen una copia modificada de los datos almacenados en el almacenamiento. Ahora, ¿qué es esto modificado y sin modificar? Llamémoslo uso dinámico de su memoria.

Las copias no modificadas son datos estáticos, mientras que las copias modificadas son datos dinámicos que cambian cada segundo. Android puede purgar las páginas limpias cuando sea necesario, ya que no acceden dinámicamente a los recursos. Eso ayuda a liberar RAM y hacer que haya más disponible. Eso puede sonar demasiado técnico, así que hagámoslo más fácil de entender usando aplicaciones del mundo real.

Página limpia, respaldada por almacenamiento, eliminada

Suponga que abre Twitter, navega por su feed y luego cambia a otra cosa. Twitter sigue ahí en tu memoria RAM. Pero si no lo abres por un tiempo, su prioridad disminuye. Más adelante, si lanzas algo nuevo, Android tendrá que liberar la memoria que está usando Twitter. Entonces, lo que hace es que cambia sus valores y datos al almacenamiento y le da espacio libre. Esta es la razón por la que cuando vuelva a iniciar Twitter, primero le mostrará la línea de tiempo en la que se hibernó y luego se actualizará. Lo mismo es para Facebook, Reddit o aplicaciones similares como Calculadora o Notas. Estas aplicaciones usan páginas limpias ya que una copia de sus datos se guarda estáticamente dentro de su almacenamiento.

Página sucia movida a zRAM y comprimida

Ahora, para las páginas sucias, considere Spotify o cualquier reproductor de música. Inicia un poco de música dentro del reproductor y luego la mantiene funcionando en segundo plano sin abrir la aplicación. Sin embargo, el sistema no puede cerrarlo ya que está utilizando dinámicamente su memoria. Como resultado, Android comprime la aplicación y la cambia a zRAM cuando se requiere más RAM libre.

¿Qué es la memoria RAM virtual?

Ahora que sabe cómo Android administra la memoria, debe preguntarse: ¿dónde entra la función de RAM virtual? ¿Recuerdas que dijimos que zRAM también es parte de la RAM? La forma en que funciona la RAM virtual es que crea una partición de intercambio en su espacio de almacenamiento y la usa como zRAM adicional.

Debido a que zRAM se almacena solo en su RAM, hay un límite en la cantidad de páginas que puede comprimir y almacenar en ella. Con una partición de intercambio, puede usar su espacio de almacenamiento como zRAM adicional, para comprimir y cambiar aplicaciones, mientras deja espacio disponible en su RAM real.

¿Es esta función nueva?

Entonces, ¿todo esto es nuevo? Bueno en realidad no. Linux ha estado usando particiones de intercambio desde el principio. Para Android, los usuarios del kernel personalizado han estado usando sus tarjetas SD para crear particiones de intercambio adicionales para mejorar la administración de la memoria.

Como tal, los fabricantes de marcas solo le brindan la misma función integrada dentro de sus máscaras de Android. Sin embargo, plantea la pregunta: si la función es tan útil, ¿por qué no ha sido parte del código fuente de Android?

¿La RAM virtual es buena o mala?

La respuesta está en el funcionamiento muy básico de la RAM virtual. Si bien la función le permite ejecutar más aplicaciones en su dispositivo comprimiendo las aplicaciones hibernadas y cambiándolas a su almacenamiento, hace más daño que bien. Debido a que las particiones de intercambio esencialmente almacenan aplicaciones activas, hay un mayor sentido de lectura y escritura involucrado.

Esto funciona bien en el almacenamiento tradicional, pero la memoria flash tiene un número limitado de lecturas y escrituras. Entonces, al usar SWAP o RAM virtual, técnicamente está reduciendo la vida útil del almacenamiento de su dispositivo.

Esto también se destaca bien en página de desarrollador de Android. «En Android, el almacenamiento no se usa para el espacio de intercambio como en otras implementaciones de Linux, ya que la escritura frecuente puede desgastar esta memoria y acortar la vida útil del medio de almacenamiento». Otro ejemplo de esto está en los nuevos MacBooks M1 de Apple. Esas máquinas usan una partición de intercambio en los SSD de Apple, por lo que los usuarios se han quejado bastante.

¿Importa la RAM virtual y debería usarla?

Esencialmente, todo depende de cómo definas la multitarea. Si está haciendo malabarismos entre solo dos o tres aplicaciones activas, entonces seguro, la RAM virtual ayuda con eso. Pero si continúa cambiando entre 5-6 aplicaciones muy activas, la RAM virtual no hará nada porque seguirá cambiando las aplicaciones.

En esencia, la función de RAM virtual le permite más espacio de RAM disponible para que se ejecuten las aplicaciones. Sin embargo, tiene el costo de su almacenamiento. Si tiene la intención de seguir usando su dispositivo durante más de dos años, creemos que usar RAM virtual podría no tener mucho sentido.