El tema de por qué Android necesita más memoria RAM que iOS para funcionar bien ha sido desde siempre objeto de intenso debate, los del Team Apple generalmente lo atribuyen a la mano milagrosa de Steve Jobs o a la máxima de que Apple no comete errores, mientras que nosotros casi siempre damos la redundante y cansina excusa de las muchas funciones que Android ofrece, razón no nos falta ni a nosotros ni a los usuarios de iOS, en verdad. Si somos curiosos notaremos que el iPhone 6 tiene 1 GB de RAM mientras que los últimos tope de gama en Android no tienen menos de 3 GB.

Este hecho no hace más que propagar la idea de que Android necesita recursos innecesariamente altos para funcionar, pero esto no es necesariamente así, no es que Android esté mal hecho, sino que entre otros factores está diseñado para ofrecer más funcionalidades, mientras que iOS limita intencionalmente su funcionalidad para asegurar el rendimiento en sus dispositivos, objetivo que logra conseguir y muy bien, de hecho. Pero la vida no es tan simple, y por eso en este artículo desmentiremos muchos de los mitos que rodean a Android e iOS y explicaremos el por qué de las cosas en estos dos sistemas operativos.

La máquina virtual (antes Dalvik, ahora ART)

[youtube src="B-CdSuFZj1s" /]
Empecemos por lo básico. Android usa un intermediario para ejecutar sus aplicaciones: una máquina virtual. No es la solución perfecta, pero es lo que hay. Antes de que llegara Android Runtime (ART), el entorno de ejecución de Android se llamaba Dalvik. Si tienes un dispositivo con Android 4.4 o inferior, es la máquina virtual con la que probablemente estás leyendo este artículo. ¿Qué se supone que es Dalvik? En resumidas cuentas (y vulgarmente hablando), Dalvik es una capa de traducción.

Verán, una gran proporción de las aplicaciones en Android están escritas en lenguaje Java, lo que hacía Android antes de Lollipop era convertirlas en ejecutables de Dalvik (.dex). Ahí viene lo bueno, ¿por qué? Veamos: a diferencia de Apple que ejecuta código nativo, es decir, leído directamente por la misma CPU, resulta que el código de Dalvik no es ejecutado nativamente por el procesador y debe ser traducido y compilado 'justo a tiempo' para que este lo pueda digerir ya masticado; por pura lógica, es obvio que este proceso necesita sustancialmente más recursos. (Mira el vídeo arriba y lo entenderás mejor).

Si lo que usas es Lollipop, la cosa es diferente y se llama ART, lo que este entorno de ejecución hace es realizar una compilación 'antes de tiempo' (AOT) que consiste traducir el bytecode en lenguaje de máquina al momento de la instalación. El resultado es el mismo que iOS pero logrado de forma muy diferente: las aplicaciones son leídas directamente por el procesador al estar precompiladas. Con ART las aplicaciones abren mucho más rápido, pero se instalan mucho más lento que en Dalvik.

Es con ART que el rendimiento general de Android se ha visto aumentado considerablemente, y es que ART permite al sistema utilizar muchísimos menos recursos mientras se está ejecutando una aplicación, ya que mientras las aplicaciones están corriendo no se está interpretando el código sobre la marcha como si ocurre con Dalvik, lo que significa un menor uso de procesador y memoria RAM. Con ART hoy podemos hablar de un rendimiento igual e incluso en ocasiones superior al de iOS si hablamos de Android puro (AOSP).

Recolección de basura

Uno de los pilares de la termonuclear es sacar a relucir el tema del proceso de recolección de basura o garbage collection (GC); un procedimiento que Android realiza para reciclar la memoria de una aplicación al momento de cerrarse. Este proceso no sólo recicla la memoria, sino que también recicla sectores usados en la memoria interna y externa. Esto es bueno y malo a la vez, porque el garbage collector funciona muy eficientemente cuando se tiene una buena cantidad de RAM; el problema viene cuando el sistema tiene poca memoria.

El proceso de recolección de basura es fundamental en equipos de sobremesa y portátiles que tienen discos SSD —o de estado sólido— por la sencilla razón de que en estos aparatos no se puede llevar a cabo una desfragmentación de disco, que es el equivalente a la recolección de basura en discos duros mecánicos.

Si no hay recolector de basura y nuestro almacenamiento está lleno muy por encima del 50%, el sistema operativo de turno (sea Linux u OS X) empezará a sobreescribir en sectores usados y eventualmente esto comenzará a afectar negativamente en los tiempos de lectura y escritura formando cuellos de botella hasta que nuestro dispositivo sufra ralentizaciones masivas, que es lo que suele ocurrir en dispositivos Android con memorias NAND baratas.

Aunque iOS no cuenta con un proceso de GC, lo cierto es que eventualmente tendrá que implementar uno similar (ARC), especialmente si pretenden que el sistema operativo tome ventaja de los 64 bits. De hecho, aunque es posible que iOS 9 incluya algún tipo de recolector, los problemas con el lag en el iPad Pro sugieren que falta algo más de trabajo en este aspecto.

Multitarea real, más viejo que tú y yo

No, no es una falacia o un cuento inventado por la peña androidera, la multitarea real ha existido en Android desde sus inicios. Para poder tener multitarea real se necesitan núcleos de procesador que mantengan con vida a las aplicaciones y claro está, una cantidad considerable de memoria RAM donde alojar sus procesos.

Esto es el por qué en Android podemos abrir varias aplicaciones y pestañas del navegador a la vez y hacer muchas cosas al mismo tiempo. Es por ello que la multitarea en Android brilla como el sol cuando se tiene 2 o más gigas de RAM, ya que esta es más eficiente cuando se tiene más memoria.

Esto sin embargo no sucede en iOS, y es que si bien el sistema operativo es capaz de ser extremadamente fluido gracias a que este prioriza el renderizado de su interfaz por encima de todo pausando cualquier otro hilo, el hecho de que tenga una cantidad de memoria muy escasa —asunto que muchos asocian con tacañería— causa que cuando suspendamos una aplicación en iOS y al rato volvamos a abrirla, el sistema lo que haga es abrir temporalmente un 'pantallazo' de dicha aplicación hasta que termine de abrirla.

No es de ninguna manera algo inventado: hasta la llegada del iPhone 6s y el iPad Pro, la multitarea real existió en ningún dispositivo iOS. Esto se está dejando notar en iDevices más antiguos arrastrándose miserablemente con iOS 9.3.2.

Los problemas con la memoria en iOS

¿Saben qué? Ignoremos por un momento que iOS ha tenido cuelgues, problemas y crasheos (o cierres forzosos) relacionados con la memoria casi desde el momento de su concepción, y centrémonos en el hecho de que se ha encontrado que tanto el iPad Air 2 como el iPhone 6 aún padece de estos problemas.

Este problema fue descubierto recientemente. Resulta que Apple contrató a una compañía que en un momento dado produjo una gran cantidad de memorias NAND defectuosas —llamémosle muy vulgarmente discos duros—, lo que llevó a la revelación de que iOS utiliza el almacenamiento NAND como memoria RAM virtual cuando lo necesita... Este es el por qué muchos dispositivos Apple con placas NAND defectuosas crasheaban múltiples veces en un sólo día.

¿Entonces es eficiente Android?

Así que contrario a lo que erróneamente se piensa del otro lado, Android sí usa la memoria que tiene eficientemente. A diferencia de Windows en que cuanta más memoria libre es mejor y aún así es inexplicable por qué debe tenerse memoria de paginado sin importar cuánta memoria RAM tengamos.

Android al ser un derivado de Linux también comparte uno de sus conceptos más fundamentales: que 'memoria sin usar es memoria desperdiciada', esto toma más sentido en un dispositivo móvil en donde el ahorro de batería es una prioridad. Así que la memoria RAM no utilizada se distribuye en las aplicaciones que más lo necesiten.

Para nadie es un secreto que la gestión de memoria se ha visto lastrada en Android 5.0 Lollipop después de habernos acostumbrado a la estabilidad de KitKat, pero ya con Marshmallow 6.0 bien plantado en nuestros terminales, ya sea en forma de OTA o de alguna distro como Cyanogen, se han visto mejoras considerables en cuanto a rendimiento en terminales con poca memoria —un Moto E (2014) da fe de ello.

Ambos sistemas operativos tienen sus virtudes y defectos, así como un Nexus 7 con 1 GB de RAM es incapaz de mover Lollipop con un mínimo de fluidez, así tampoco un iPad Mini o un iPhone 5 es capaz de mover iOS 9.x sin resultar igualmente desesperante.

Publicar un comentario

  1. Muy buen articulo, bonita y "detallada" para el usuario básico comparación. llegue aquí desde Google+ (red muerta para algunos xD) seguid compartiendo ;)

    ResponderBorrar
  2. Bestial el post, gracias por la aclaratoria

    ResponderBorrar

César Barrantes

{picture#https://2.bp.blogspot.com/-87jyLDIFZTM/WBFboqQGR4I/AAAAAAAAb5I/6-1SbCa-kx8owN3AsTVvNL0Gr7qlhE6WACLcB/s200/cesar-barrantes-renderizado-01.jpg} Cinéfilo, carnavalero, amante de la buena música y friki a tiempo completo. "Algo suena en mí y es mejor que una canción; el arte es sobretodo un estado del alma". {facebook#https://www.facebook.com/cesar.barrantes.7} {google#https://plus.google.com/115915750931228352631} {youtube#https://www.youtube.com/channel/UCp_z0l2keVLXFRwUPa35RtQ}

Rolo Nieves

{picture#https://4.bp.blogspot.com/-kvtvyd4PBp0/WBFbYZsq7UI/AAAAAAAAb5A/YuK4RXgt9ugsti8HLUZgmHBBPMvNj9rBwCLcB/s200/rolo-nieves-renderizado-01.jpg} Amante de la informática, apasionado del software libre, GNU/Linux, el rock progresivo y usuario sin remedio de Android. Cada aspecto de mi vida es psicodélico. {facebook#https://www.facebook.com/LeMoktar} {google#https://www.google.com/+RoloNieves}
Con tecnología de Blogger.