En el mundo de los ordenadores reales, con una memoria muy rápida y un almacenamiento mucho más lento (discos duros), existe el concepto de memoria virtual. Básicamente, cada aplicación recibe lo que parece una gran cantidad de memoria, una espacio de direcciones . Entre bastidores, este espacio de direcciones se divide en páginas que se transfieren entre la memoria real, rápida, y una parte del disco duro llamada espacio de intercambio (es decir, memoria lenta) por el sistema operativo y según sea necesario. En Linux, este espacio de intercambio puede ser una o más particiones especialmente formateadas y/o uno o más archivos, o archivos de intercambio . El sistema operativo es lo suficientemente inteligente como para llevar la cuenta de dónde está almacenando qué. También se asegura de que, antes de que un programa intente leer/escribir desde un lugar de la memoria, la página a la que se accede se traslade primero a la memoria real.
Por ejemplo, si estás utilizando tu procesador de textos y abres 10.000 documentos, agotando la memoria principal, algunos de los documentos a los que has accedido menos recientemente pueden ser transferidos al espacio de intercambio para dar paso a los que acabas de abrir. Si cambias a tu navegador, quizás toda la memoria utilizada por el procesador de textos se desvíe a la swap, sustituyéndose por el estado de trabajo del navegador.
De nuevo, esto lo hace automáticamente el sistema operativo, sin que los programas intervengan realmente. Según sus programas, se están ejecutando en una máquina con una gran cantidad de memoria. Según el usuario, cuando se produce este intercambio, habrá breves retrasos mientras el sistema operativo mueve los datos entre los dos tipos de memoria. En los días de Windows 95, estaba bastante claro cuando se producía el intercambio, ya que la luz del disco duro se quedaba fija durante unos segundos.
Así que, avanza rápido hasta los teléfonos. En un teléfono con Android, normalmente no hay disco duro. En su lugar, tienes la memoria principal -RAM, o esa memoria rápida mencionada anteriormente- y alguna forma de almacenamiento no volátil. Resulta que ese tipo de memoria es más lenta que la RAM, pero no tanto como un disco duro. Aunque sería tentador utilizar una parte o la totalidad de este almacenamiento no volátil como espacio de intercambio, sospecho que los fabricantes y Google, observaron que una propiedad de este almacenamiento no volátil es que se degrada con las escrituras repetidas, y por eso optaron por no utilizarlo. Esto significa que en lugar de tener una memoria aparentemente ilimitada, las actividades en Android sólo tienen acceso a la RAM. Cuando el framework de Android intenta iniciar una actividad y el sistema operativo dice lo siento, no tengo memoria Android responde matando las actividades hasta que haya recuperado suficiente memoria. Por eso se nota Navegador Dolphin realmente la recarga de páginas cuando se cambia de y se vuelve a ella: Lo que sea que hayas cambiado intentó usar tanta memoria que Android tuvo que empezar a matar actividades.
Entonces, Swapper. Lo que hace swapper es indagar en el sistema operativo y volver a habilitar la memoria virtual creando un archivo de intercambio en tu tarjeta SD y comunicándoselo al SO. El sistema operativo entonces hace que todos los programas (incluyendo el marco de Android) sientan que cada uno tiene un montón de memoria, y se encarga de mover los datos entre la memoria real y el archivo de intercambio. Por eso Dolphin no se mata con tanta frecuencia con Swapper activado .
Como explica la página de Swapper en Google Play, esto podría tener un efecto perjudicial en la memoria no volátil en la que se encuentra el archivo de intercambio. Si estás usando una tarjeta SD, cuando empieces a tener errores de escritura/lectura, puedes simplemente cambiarla. Si estás usando un teléfono con memoria no volátil incorporada, es una historia diferente. No estoy 100% seguro de qué tipo de impacto tienen las escrituras repetidas en este tipo de memoria, pero es un riesgo que debes tener en cuenta.