Mejorar el rendimiento de Android modificando el manejo de memoria RAM
Nota: a pesar que este hack sea seguro, no me hago responsable que tu Android se convierta en un hermoso pisapapeles o explote en mil pedazos. Para aplicar este hack debes tener acceso root en Android.
A diferencia del iPhone OS, Android es un sistema operativo multitarea, lo que implica que puede haber varias aplicaciones y procesos ejecutándose al mismo tiempo. Si utilizan Android habrán notado que a medida que abren y cierran aplicaciones la interfaz se puede ralentizar. Uno de los motivos es que ciertas aplicaciones no tienen una opción para que las cerremos explícitamente y quedan corriendo en segundo plano hasta que Android decida matarlas para liberar RAM. Esto es molesto ya que obliga a los usuarios a instalar aplicaciones que permitan finalizar manualmente estos procesos “colgados” para que el rendimiento del celular no decaiga.
El tema reside en cómo Android gestiona la memoria RAM. Mientras haya disponible memoria RAM, Android hará lo posible por mantener dichas aplicaciones y procesos en ella. Si en algún momento iniciamos una aplicación y Android detecta que sólo hay disponible cierta cantidad de RAM, procederá a matar algún proceso o aplicación que esté residente en memoria en base a ciertos parámetros y un algoritmo.
La explicación sencilla de como Android decide matar los procesos se basa en que existen 6 niveles de procesos (1-primer plano, 2-visible, 3-segundo plano, 4-oculto, 5-proveedor de contenidos y 6-vacío) que determina la importancia de cada uno al momento de decidir si matarlo o no. Los de nivel 1 son las más importantes y los de nivel 6 son los primeros que se pueden terminar. Además para cada uno de estos niveles hay un límite mínimo de memoria a partir del cual Android comenzará a matar procesos de dicho nivel. Por ejemplo, podemos especificar que las aplicaciones o procesor de nivel 6 se deben empezar a liberar cuando haya menos de 26MB de RAM libres.
Para ver los valores que por defecto trae Android ejecuten el siguiente comando desde una terminal en Android. Pueden usar la aplicación “Better Terminal” o “Terminal Emulator”:
# cat /sys/module/lowmemorykiller/parameters/minfree
Con lo que obtendrán los valores de páginas 1536,2048,4096,5120,5632,6144 que corresponde a los niveles 1,2,3,4,5,6
Gracias a la apertura de Android, podemos modificar estos parámetros y jugar con ellos hasta obtener el mejor rendimiento para nuestro celular. Estos parámetros se especifican en el archivo /sys/module/lowmemorykiller/parameters/minfree y los valores corresponden a páginas. Como 1 página = 4KB, entonces un valor de 6656 equivale a 26MB (6656*4/1024). Tomando como referencia los valores por defecto del HTC Magic “1536,2048,4096,5120,5632,6144″, creo que son demasiados permisivos y hacen que queden muchas aplicaciones en memoria consumiendo recursos. Por lo tanto, podemos modificarlos para que Android adopte una postura más agresiva en cuanto al cierre de aplicaciones que no usamos.
Para conocer que valores aplicar, me basé en la memoria libre promedio del Magic, que durante varios meses noté que estaba entre 26-30MB. Pueden saber cuanta memoria tienen libre ejecutando el comando cat /proc/meminfo. Allí sumen los valores de los campos MemFree y Cached para obtener el total de RAM disponible para aplicaciones.
Por lo tanto decidí probar con los siguientes valores “1536,2048,4096,6144,6656,7168″ y la mejora en el rendimiento fue notoria. Las aplicaciones se abren y cierran mucho más rápido, y el desplazamiento por la interfaz es mucho más fluído. Al volver a Home desde una aplicación, sobre todo el navegador que suele consumir bastante memoria, no estoy 2 horas esperando que me muestre los iconos.
Para probar y aplicar temporalmente los nuevos valores deben ejecutar el siguiente comando:
# su echo "1536,2048,4096,6144,6656,7168" > /sys/module/lowmemorykiller/parameters/minfree
Tengan presente que al reiniciar el teléfono perderán este cambio, por lo tanto no tienen nada de que preocuparse si meten la pata o si no quieren mantenerlo.
Finalmente, una vez que encontraron los valores adecuados para su modelo de celular en particular, existen aplicaciones en el Android Market que nos permiten establecer estos valores de manera permanente.
AutoKiller

Auto Memory Manager

MinFreeManager

Si quieren leer la explicación detallada acerca del gestor interno de baja memoria de Android pueden leer este post en xda-developers.
Me olvidaba! Lo mejor de esto es que se pueden olvidar para siempre de los “task killers” para Android.
Si te gustó el post, podés dejar tu comentario o suscribirte al feed para recibir los últimos artículos en tu email.
Comentarios
Muy Buena la explicacion, pero me quedo con el auto memory manager no vaya a ser que me quede con la galaxy de pisapapel..jeje
Gracias por la información. Resulto efectivo para Movil Samsung spica 5700. Funciona mejor, se me colgaba a cada rato. Me tenia estresado
Disculpa la,verdad estoy muy atrazado en informacion hacerca de todo lo que tiene que ver con la tecnologia de los celulares , tengo un android que compre hace casi año y medio pero se me ha,hecho demasiado lento y quiero mejorarlo como puedo hacerlo te agradeseria una hayuda y gracias de antemano
Muy buena info, ahora a probar que valores son los mas adecuados para mi galaxy s para que aguante mas la bateria con CM7
Muy buen post, me gustaria intentarlo, lo que no se es si puedo hacerlo en un xperia x10i con android 2.3.3?
Y también otra cosa, esas app q publicaste funcionan solo con usuarios root? Y si los valores que les ingresamos los tenemos que ir probando o vienen por defecto?
Gracias de antemano y denuevo, muy buen post! (y)
Creo que el problema de Android es la falta de responsabilidad de quienes diseñan las aplicaciones. En Windows pocas aplicaciones permanecen en segundo plano de manera innecesaria y se inician solas. En cambio en Android, aun aplicaciones inútiles lo hacen. El manejo de procesos, es el único punto débil de este SO. Google debería hacer algo al respecto, para que sea mas competitivo.
Excelente artículo. Conocía algunas de las aplicaciones mencionadas, pero no comprendía el funcionamiento de la eliminación de procesos en Android.
Ahora lo veo todo claro :)