Martes, 28 de abril de 2009

Trucos Windows MobileCómo liberar memoria instantáneamente en Windows Mobile

La gestión de memoria RAM en los teléfonos y PDAs siempre es un tema crítico, dada su poca memoria instalada en comparación con, por ejemplo, un PC. Según se van ejecutando y cerrando programas a lo largo del día, la memoria libre se fragmenta, se queda bloqueada, etc, lo cual con el tiempo hace que nuestro equipo vaya quedándose con menos memoria disponible, llegando incluso a colgarse si dicha cantidad baja de un cierto umbral.

Es importante ser consciente del consumo de memoria del equipo
Es importante ser consciente del consumo de memoria del equipo

Windows Mobile tiene una muy buena gestión de la memoria RAM en estos casos. Cuando la memoria se utiliza por completo, aparece un espartano menú que nos pregunta qué aplicación queremos cerrar para liberarla, evitando que el equipo se cuelgue. Hubiese querido tener esta posibilidad en mi Tungsten E2 con PalmOS. Esta falta de control (si el equipo no se cuelga es simplemente porque no hemos usado suficiente memoria) seguramente son la causa principal de que no me plantee volver a este sistema operativo.

Pero lo que poca gente sabe es que cuando se lanza este menú de emergencia, además de cerrarse la aplicación elegida, Windows Mobile envía un mensaje del sistema (concretamente “WM_HIBERNATE”) a todos los programas en ejecución, pidiéndoles que liberen toda la memoria RAM que puedan estar desperdiciando en ese momento.

¿No sería genial poder lanzar esta petición en el momento que queramos? Pongamos un ejemplo: un programa que necesita 10Mb de RAM no se puede ejecutar porque tenemos sólo 4Mb libres. Cerramos todos los programas que teníamos abiertos, pero como llevamos sin resetear el teléfono semanas, aún hay sólo 8Mb libres… con esta llamada de limpieza podríamos seguramente conseguir esos 2Mb extra…

Hibernate

Hibernate libera en segundos esos Mb de RAM tan necesarios
Hibernate libera en segundos esos Mb de RAM tan necesarios

Pues esto es precisamente lo que hace el programa Oxios Hibernate: envía el susodicho mensaje “WM_HIBERNATE” a todas las aplicaciones, consiguiendo una liberación de RAM instantánea y nada despreciable, sobre todo para equipos con poca RAM instalada. Una vez instalado sólo tenemos que ejecutarlo cuando queramos, y a los pocos segundos aparecerá una ventana popup informando de la cantidad de memoria liberada.

Hibernate fue el primer programa en implementar esta técnica, pero últimamente han aparecido otros más avanzados.

CleanRAM

CleanRAM permite usar diferentes métodos para liberar RAM CleanRAM puede programarse para su ejecución periódica
CleanRAM permite usar diferentes métodos para liberar RAM

Es el caso de CleanRAM. Además del método básico, en el cual envía este mensaje “WM_HIBERNATE” y libera memoria instantáneamente, tiene otros métodos más lentos pero también más efectivos: en el segundo (el cual suelo utilizar) realiza un intento más exhaustivo de liberar memoria, mientras que en el tercero espera la contestación de las aplicaciones al mensaje, y cierra aquellas que no están respondiendo, consiguiendo así una liberación de memoria máxima.

Además se incluye la posibilidad de definir una “lista blanca” de aplicaciones que no queremos que CleanRAM cierre, ya sea por ser fundamentales para el sistema operativo, o porque nos gusta que siempre estén ejecutándose en segundo plano. Y para rizar el rizo, CleanRAM también permite programar limpiezas de memoria periódicas.

El programa se divide en dos partes diferenciadas. En la de configuración elegiremos el método que se usara, la lista de aplicaciones, y demás preferencias. Una vez hecho, podremos ejecutar cuando queramos la otra aplicación (la principal) de la misma manera que se usa Hibernate.

Otras opciones

Otro programa que implementa este cierre de programas con “lista blanca” de excepciones es RAM Sweeper. Está desarrollado por un forero de HTCManía.

Por último, MemMaid es un programa de pago que integra esta funcionalidad de liberación de RAM, así como otras de limpieza del sistema de ficheros.

Sinceramente, con la protección de Windows Mobile que evita que el teléfono o PDA se cuelgue cuando se queda sin RAM libre, y la posibilidad de usar alguno de estos programas para dejar el equipo con tanta RAM libre como recién arrancado, me he olvidado de los soft-resets en mi P3300, aunque tenga sólo 64Mb de RAM y ahora lleve la ROM NiAx Artemis 6.1.90 Alias Iolite (con el Manilla2D se consume un 80% de la RAM nada más arrancar).

Sólo hay que acordarse de lanzar el programa de vez en cuando en modo “Hibernate”, y si vemos que la memoria liberada no es suficiente, optamos por el método más agresivo, que tarda unos 15 segundos pero deja nuestro teléfono listo para arrancar los programas más hambrientos de RAM.

si te ha gustado este post.



3 comentarios sobre “Cómo liberar memoria instantáneamente en Windows Mobile”


Deja un comentario


Etiquetas válidas:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Akismet ha protegido ya este blog de miles de comentarios fraudulentos. Pero si por error filtra tu comentario por favor avísame mediante el email de contacto de la derecha.