La Web del Programador: Comunidad de Programadores
 
    Pregunta:  4038 - OPTIMIZAR MEMORIA
Autor:  Ana Guillén González
Mi problema con VB5, es que tengo un proyecto con alrededor de 65 pantallas (frm), al momento de abir mi proyecto, me envia un mensaje de que no hay memoria suficiente para ejecutar la aplicación, ¿Qué es lo que puedo hacer para que al momento de ejecutar mi programa solamente se abra mi pantalla principal y que esta vaya abriendo las ventanas necesarias, sin tener que cargarlas todas al comienzo de la aplicación?

Yo no sé mucho de programación, así que les agradecere toda la ayuda que me puedan ofrecer.

  Respuesta:  Cesar Daniel Guillen Oreamuno
Me ha pasado con PCs modernas y con mucha RAM que VB5 o VB6 muestran mensajes de memoria insuficiente. El problema radica en que estas versiones son muy viejas que no contemplaron que VB utilizara o se ejecutara en un computador con sierta cantidad de memoria ocupada.

En la actualidad es mejor dejar de usar VB y pasarse a VB.NET

  Respuesta:  Claudio Delgado
Una buena manera de optimizar la memoria es:

Por ejemplo cuando no utilizas mas una variable del tipo RECORDSET
la cierras RgClientes.close y luego la descargas de memoria utilizando

SET RgClientes = nothing

lo mismo para los formularios utilizando esta instruccion en el evento
UNLOAD

Carga y Descarga tus formularios a medida que los necesites no uses FORM.HIDE usa UNLOAD ME.

  Respuesta:  J RC
No se exactamente qué estás haciendo. Me imagino que al cargar tu programa (en el objeto inicial, formulario o procedimiento), estas cargando de golpe todos los formularios. Lo que debes hacer es usar el metodo Load de cada formulario cuando lo necesites, y en cuanto ya no sea necesario descargarlo con Unload. Yo he hecho un programa multimedia bastante grande, y de esta forma lo ejecutaba incluso en un 486 con 8 Megas de RAM.

  Respuesta:  Jose Luis Sepulveda
Hola,

En realidad no se como hacer lo que ud. pide, porque VB normalmente pone todo el programa en la memoria. Pero, si se fija, ud puede usar DLLs ellos son activados en forma differente.

Tanbien la close unload (object) saca de la memoria momentariamente un objecto.

La verdad es que creo que debiera poner mas tiempo en rediseno del projecto, y minimisar el uso de Forms. VB tiene un numero limitado de objectos y quizas a eso se debe su problema. Para mas informacion le recomiendo que visite MSDN aunque es en Ingles.

Jose.