iOS, al igual que OS X, cuenta con un sistema de memoria virtual que está siempre operando, no se puede deshabilitar por el usuario [1].
Cuenta con hasta 4GB de espacio de memoria direccionable para procesos de 32 bits, o 18exabytes para procesos de 64bits. En Mac OS X, existe un espacio extra en el disco duro que sirve como extensión de la memoria principal, pero esta caracterÃstica no está implementada en iOS, pues el manejo de la memoria virtual se realiza de la siguiente manera [1]:
Los datos de solo lectura (por ejemplo el código, recursos gráficos) que de por sà ya están en disco, se remueven de la memoria principal en caso de ser necesario, y se vuelven a cargar cuando se soliciten. Los datos modificables por la aplicación o el usuario, nunca son eliminados de la memoria por el sistema operativo [1].
Si la cantidad de memoria disponible se reduce hasta un umbral determinado, el sistema le pide a las aplicaciones en ejecución que liberen memoria voluntariamente para asà poder alojar nuevos datos. Las aplicaciones que no liberen suficiente espacio son terminadas por el sistema operativo. Esta caracterÃstica de poder eliminar datos de la memoria es responsabilidad de los desarrolladores de aplicaciones, utilizando el sistema ARC (Automatic reference counting), que lleva un control sobre los datos que están siendo referenciados por objetos. Difiere del garbage collector de Java, por ejemplo, en que las decisiones de memoria se toman en tiempo de compilación, y no de ejecución lo que ahorra recursos en la ejecución [1].
La memoria RAM en iOS está dividida en páginas de 4kB cada una, la dirección lógica de la memoria asignada a un proceso consta de regiones mapeadas de memoria, que consiste en un número determinado de estas páginas por cada región. Se conoce para una de ellas, la página donde inicia, y la página donde termina [1].
El kernel asocia un objeto de memoria virtual con cada región del espacio de direcciones lógicas, y los utiliza para seguir y administrar las páginas residentes y no-residentes de las regiones asociadas [1].
Listas de páginas en el kernel [1]
El kernel mantiene tres tablas de páginas de memoria fÃsica:
-
La tabla de páginas activas: Contiene la información de las páginas que están en memoria y han sido accedidas recientemente.
-
La tabla de páginas inactivas: Contiene la información de las páginas que están en memoria pero no han sido accedida recientemente, por lo tanto contienen información válida pero ésta puede ser removida de la memoria en cualquier momento.
-
La tabla de páginas libres: Contiene la información de las páginas que no están asociadas con objeto de memoria virtual. Estas páginas pueden ser utilizadas de manera inmediata por cualquier proceso que las necesite.
Cuando el número de páginas en la tabla de páginas libres se reduce hasta un umbral determinado por la cantidad de memoria fÃsica, el paginador hace un intento para balancear las tablas. Esto lo hace sacando páginas de la tabla de páginas inactivas. Las páginas modificadas (es decir, aquellas que cambiaron su contenido por el usuario o por la aplicación) pero inactivas deben permanecer en memoria hasta que la aplicación que las maneja las elimine. [1]

Figura 1. Imagen tomada de [2] bajo CC
Referencias
[1] Apple, «Mac Developer Library,» 23 04 2013. [En lÃnea]. Available: https://developer.apple.com/library/mac/documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html. [Último acceso: 01 06 2015].
[2] J. Soto, «culturamac,» 16 09 2014. [En lÃnea]. Available: http://culturamac.com/el-iphone-6-y-6-plus-tienen-1gb-de-ram-se-necesita-que-un-iphone-tenga-mas-memoria-ram/. [Último acceso: 01 06 2015].