Visual Basic - Uso de Memoria

Life is soft - evento anual de software empresarial
 
Vista:

Uso de Memoria

Publicado por Byron (12 intervenciones) el 03/09/2004 20:50:54
Alguien por favor me puede explicar como funciona el uso de memoria en VB6. Tengo un EXE que está ejecutándose todo el día y durante esta ejecución llama a diferentes DLL\'s. El problema es que conforme va pasando el día, éste programa cada vez va ocupando más y más memoria hasta que la máquina se queda inhibida y sin memoria virtual. Please, qué estoy haciendo mal. Ya he revisado y sí libero memoria asignándole nothing a los objetos (tanto en el programa principal como en las DLL\'s invocadas) y no sé qué más puede ser.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Uso de Memoria

Publicado por Mr. Sade (322 intervenciones) el 03/09/2004 22:56:11
los objecto nos se destruyen con solo asignarles NOTHING.
los objectos de VB se destruyen cuando su numero de referencia es igual a 0,
NOTHING solo decrementa sus referencias y si al decrementarla es 0 entonces el objeto se destruye.

asi que asegurate que estas poniendo a NOTHING cada referencia del objeto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Uso de Memoria

Publicado por Ruri (583 intervenciones) el 04/09/2004 07:53:31
Byron:
VB no limpia la memoria de los objetos que haz inicializado con la instrucción Set. Seguramente no haz liberado algunos objetos. Verifica también que las Dlls que utilizas no chorren memoria. Si no conoces quien las hizo, sería mejor que las verifiques. Si estás colocando imágenes sobre un control, también límpialas con Nothing. Muchos objetos utilizan la instrucción open, verifica si existe una instrucción close o similar para cerrarlos. Si utilizas matrices (arrays) elimínalos con la instrucción Erase donde corresponda. Si utilizas funciones del Api asegurate de devolver tidos los recursos. Por ejemplo, si utilizas getdc, debes liberarlo con releasedc, si usas selectobject, debes liberarlo con deleteobject. Bueno, eso es todo lo que se me ocurre. Para que no vuelva a ocurrirte este tipo de problemas, debes adquirir buenas costumbres de programación. Cada vez que instancies un objeto con SEt, colocas la instrucción que lo libera en el lugar correspondiente; si creas una matriz, colocas la instrucción Erase que la libera donde corresponda. Bueno espero no haberte fastidiado, espero que puedas resolver tu problema.

Saludos Ruri
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar