Bien, en el thread del SE X10 Mini os transmití mi desasosiego por la poca ram que veía libre a veces, que siempre andaba matando procesos con el Advanced Task Killer, etc.
Respondiéndome a mí mismo me dispuse a buscar información y por casualidad encontré algo revelador y que ayuda a entender (y echar por tierra algunos mitos) el sistema de manejo de la memoria en Android.
El post interesante es el que os pasteo a continuación:
"Por lo que dices y como lo dices, creo que estás pensando que todos los programas que ves en un gestor de tareas o desde la parte de "administrar servicios" son programas residentes. No es así. Un programa de Android puede quedarse residente en memoria (como el Gtalk, que tiene un hermoso botón de cerrar y sólo se arranca al inicio si lo configuras así, o el reproductor de música si está reproduciendo algo), pero los que lo hacen son realmente muy pocos, y los que lo hacen no guardan la interfaz entera sino sólo una pequeña parte del programa sin nada gráfico y que suele usar muy poca memoria.
La mayoría de los programas por el contrario lo que hacen es "registrarse" con el sistema para responder a ciertos eventos. Todos los programas que se registran para responder a eventos salen en el administrador de servicios, pero no tienen porque estar en memoria como podrás comprobar si haces un top o un ps desde la línea de comandos; lo estarán sólo si hay memoria de sobra, como el resto de programas. La mayoría de los programas que ves en el gestor de servicios son de este tipo. Algunos responden a notificaciones push (Gmail, PingChat, Whatsapp, Chrome2Phone, Calendar, etc), otros responden a alarmas que les manda el sistema en tiempos determinados (un depertador), otros responden a alarmas a intervalos periódicos (Twitter, Facebook y demás). Esos programas no tienen que estar en memoria, sólo cuando llega el evento que sea Android los carga, les pasa el evento, lo procesan, y se cierran.
El hecho de que veas tantos programas en el arranque es porque en Android un programa si quiere recibir eventos tiene que registrarse al inicio, de modo que el mogollón de programas ejecutándose en realidad lo único que hacen es "apuntarse" para recibir los eventos que sean y luego cerrarse. Esto es así porque cuando un programa le dice al sistema que, por ejemplo, le despierte cada media hora para comprobar el twitter, esa configuración no se pasa de un arranque a otro, de modo que hay que volver a ponerla al inicio. Y esto lo hacen todos los programas que tengas instalados que tengan la posibilidad de responder a un evento incluso aunque tengas desactivadas las notificaciones en el programa; en este caso se despiertan, ven que no tienen que registrar nada, y se cierran, pero si usas un programa para ver los procesos que se ejecutan al inicio te saldrá.
Sobre el "algoritmo del mono", es bien sencillo y es parecido al que usa por ejemplo Linux para las cachés del disco (en Linux casi nunca hay RAM vacía al poco de arrancar, todo lo que sobra lo usan las cachés del disco), se puede resumir en "mete todo lo que puedas en memoria, y si nos quedamos sin memoria, cárgate lo que menos se use". Todo parte de la premisa de que la memoria RAM vacía, no sirve para absolutamente nada. De modo que si estás en un programa y abres otro, si hay memoria libre no hay ninguna necesidad de cerrar el primer programa. Lo que se hace es mandarle una señal de "pausa" que detiene la ejecución del programa para que no consuma nada de CPU (esta señal el programa la puede ignorar, pero es raro que lo hagan salvo que por algún motivo necesiten seguir ejecutándose como un cronómetro o un reproductor musical). Si más adelante sigues abriendo programas y de repente la memoria esta llena, Android selecciona una "victima" y la cepilla. El algoritmo que elige para cepillarse un programa es algo más complicado, pero si un programa no tiene notificaciones, no está en primer plano y hace mucho que no se usa, tiene todas las papeletas. Entonces le manda una señal "stop" para que el programa guarde su estado y lo cierra.
No se gana absolutamente nada, en Android ni en ningún otro sistema, por tener la memoria vacía, al contrario, al dejar los programas en memoria los cambios entre ellos son mucho más rápidos.
Dicho lo cual, si sigues angustiado por tener la memoria llena de programas o porque muchos programas se inician en el arranque (aunque como te digo luego es como si no estuvieran), el programa que buscas es "Startup Auditor". Con ese verás que programas se registran en el inicio y podrás desactivarlos, pero luego no te sorprendas si dejas de recibir notificaciones o no suena el despertador Incluso si quitas del arranque un programa para el cual no tienes notificaciones y más adelante configuras en el programa que te notifique, no funcionará si no te acuerdas de reactivar que se ejecute al arrancar."
La discusión trata sobre la efectividad o no de usar un task killer. La podéis encontrar entera en el siguiente link:
Y de paso, también la fuente de donde parte la discusión:
http://www.elandroidelibre.com/2010/08/como-ahorrar-bateria-en-tu-android.html