miércoles, 7 de mayo de 2008

Cómo liberar memoria descargando DLLs no utilizadas




Las bibliotecas de enlace dinámico, o DLLs, permiten que la funcionalidad de las aplicaciones esté repartida entre distintos archivos, los cuales se cargan en la memoria del PC sólo cuando la aplicación los requiere. El inconveniente de este esquema es que Windows, luego de cargar una DLL en memoria, la mantiene por si se la requiere nuevamente en el corto plazo. Para evitar esto, sólo debe hacerse una pequeña modificación en el registro de Windows.

En Microsoft Windows, suele ocurrir que ciertos programas utilizan importantes cantidades de memoria RAM de la PC al realizar tareas exigentes, y luego dicha memoria no se libera para otras aplicaciones, aún cuando la aplicación que la utilizó ya no la necesita.

Esto generalmente se debe a que las aplicaciones utilizan archivos de bibliotecas de enlace dinámico (DLLs, dynamic link libraries) que Windows carga en la memoria sólo cuando son requeridas.

El problema es que el subsistema de memoria de Windows intenta normalmente mantener cargadas estas DLLs, para evitarse la tarea de volver a cargarlas en caso de que sus funciones vuelvan a utilizarse en el corto plazo. Este comportamiento, si bien resulta eficiente para evitar la carga extra de trabajo requerida para cargar y descargar DLLs, puede causar problemas en equipos con poca memoria. Además, puede crear conflictos entre aplicaciones que usan diferentes versiones de una misma DLL.

Para evitar tal comportamiento, es necesario grabar un valor en una clave determinada del registro de Windows, realizando los siguientes pasos:

* Acceda al Editor del registro a través del botón Inicio, opción Ejecutar.
* Escriba regedit y presione Entrar.
* En el Editor del registro, se debe localizar la siguiente ruta:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer * Dentro de la clave anterior se debe crear una nueva clave, de nombre AlwaysUnloadDLL, cuyo valor alfanumérico “(Predeterminado)” será “1” para desactivar la opción de mantener en memoria las bibliotecas de enlace dinámico.

Una vez concluida la creación de la nueva clave, cierre el editor del registro. En Windows 9x es necesario reiniciar el sistema operativo para que el cambio hecho en el registro entre en funcionamiento

No hay comentarios: