martes, 30 de noviembre de 2010

Manejo de memoria en Android


Saludos! Aprovechando que tengo algo de tiempo libre y ya hablamos de cómo obtener acceso Root en un equipo con Android, vamos a sacarle provecho a esa información y explicarles de una manera práctica como optimizar el uso de la memoria en nuestros equipos.

Como muchos de ustedes habrán notado, Android no es muy inteligente a la hora de "matar" procesos (y tristemente, muchas aplicaciones no tienen un botón de Cerrar). Sin embargo, tampoco todo es culpa de Android, el sistema gestiona la memoria de esa forma por una buena causa: mantener la aplicación en una memoria reservada, de tal manera que la próxima vez que el usuario la ejecute, ésta inicie inmediatamente. El problema es que muchos de nosotros queremos tener el control total de las aplicaciones que estan "robandonos" energía y memoria, por lo que se hace necesario ayudar un poco al sistema. Así, aprenderemos a optimizar el uso de memoria al máximo sin requerir aplicaciones de terceros para matar procesos de manera forzada (denominadas Task Killers).


[modo_teórico_on]

La memoria Ram en Android se divide en varias regiones o espacios, en los cuales se almacenan las aplicaciones dependiendo del estado en el que se encuentren. Así, podemos enumerar 6 diferentes espacios:
  1. Foreground_app: Se encuentran todos los procesos que se ejecutan en primer plano. Por supuesto, no nos conviene modificar el máximo de memoria para esta región.
  2. Visible_app: Almacena las aplicaciones que están abiertas y trabajando en segundo plano. Tampoco es conveniente modificar ésta memoria.
  3. Secondary_server: Es un espacio disponible para almacenar procesos que están en ejecución para algunas aplicaciones que lo requieran. Es posible modificar los parámetros de memoria, siempre y cuando el usuario sepa qué aplicaciones lo utilizan (tampoco se recomienda modificarlo).
  4. Hidden_app: Otro espacio, similar al anterior, que almacena las tareas no visibles. No se recomienda modificarlo en lo absoluto.
  5. Content_provider: Almacena las aplicaciones que proveen datos al sistema, así, puede existir la auto-actualización de contenidos (por ejemplo, del Android Market o el App de Facebook). Podemos limitar el parámetro de memoria por defecto (y a partir de aqui es cuando empezamos a liberar la memoria total para obtener el mejor rendimiento).
  6. Empty_app: Almacena procesos que pueden ser considerados "zombies", son aquellas aplicaciones que se han abierto, usado y cerrado satisfactoriamente. Ya no las estas utilizando, pero Android las mantiene en memoria para que la próxima vez carguen mas rápidamente. Por supuesto, no consumen CPU ni bateria pero si memoria (y ese es el problema, por eso debemos ajustar esta región de memoria).
[modo_teorico_off]

Así, en resumen, lo que debemos hacer es limitar cada una de las regiones de memoria definidas por defecto en el sistema Android para que su administrador de procesos integrado opere mas eficientemente y podamos eliminar la necesidad de "Taskkillers" de terceros para matar procesos en ejecución que no estamos necesitando y nos ocupan memoria ralentizando el equipo. Cabe destacar que con una memoria Ram total disponible de al menos 30 Mb el sistema se desempeña de manera adecuada (no es 100% fluido), sin embargo, con 70~80 Mb disponibles, el sistema operará perfectamente (no notaremos el conocido efecto "sluggish" en el Huawei U8220, por ejemplo).

Así, al definir (por ejemplo) 70Mb de espacio para la zona Empty_app, cuando la memoria disponible para esa zona está por debajo del valor predeterminado, el administrador de tareas de Android empezará a matar los procesos mas antiguos almacenados en ese espacio de forma automática y totalmente eficiente.

Entonces, los pasos a seguir para realizar esta configuración son:
PREREQUISITO:
Acceder al modo Root de Android. Si aún no lo son, para obtenerlo de una forma muy sencilla, sigan el link: http://bit.ly/eiVGw8

PASOS:
1. Descargar e instalar la aplicación MinFreeManager (se encuentra de manera gratuita en el Market). Para buscarla mas rápidamente, el respectivo código QR a continuación:

qrcode

2. Al ejecutar la aplicación, aparecerá la siguiente ventana con los diversos valores de memoria límite que podemos colocar a las regiones. Nota: Estos son los valores por defecto para un Huawei U8220.


3. Al presionar el botón de menú, ingresamos al menú del programa. Como lo muestra la siguiente imagen. Entramos a la opción "Presets" y la ventana será como la derecha. En esa ventana tendremos varias opciones de manejo de memoria predeterminadas. Como sus nombres lo indican, tenemos el valor por Defecto (Default), Leve (Mild), Agresivo (Aggresive) o un valor Personalizado que definimos a nuestra conveniencia (Custom). Particularmente, he seleccionado el parámetro Aggressive, el cual permite tener la mayor memoria disponible y, el equipo ha tenido un comportamiento excelente. Si notan alguna inestabilidad o lentitud en los procesos, pueden seleccionar un parámetro mas leve de tal manera que mas aplicaciones puedan almacenarse en memoria.



4. Para aplicar los cambios, entran de nuevo al menú y seleccionan "Apply" para hacerlo inmediatamente o "Apply at boot" para que queden guardados para siempre. Nota: Si seleccionan Apply, los cambios se perderán al próximo reinicio, por lo cual es una forma sencilla de comprobar los cambios de comportamiento, si ocurre algo fuera de lo normal, con solo reiniciar, se recupera los valores por defecto.

Sin mas, cualquier comentario, después del salto,

#init 5,

2 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. tambien sirve los mimires de memoria para el Huawei U8120?(Vodafone 845)
    Gracias y esta bueno !

    ResponderEliminar

Deja tu mensaje despues del tono ... tuuuuuuuuuuu xD