Visual Basic.NET - Liberar Recursos

   
Vista:

Liberar Recursos

Publicado por Juan Pablo (17 intervenciones) el 05/05/2010 18:58:12
Hola: Tengo una aplicación hecha en visual Basic.NET, el problema es el siguiente, cuando comienza la ejecución (en modo depuración) el espacio ocupado de memoria es 700 MB, a medida que pasa la ejecucion va aumentando progresivamente, y sigue hasta llegar a los 1,5 GB (seguiria creciendo pero terminan los datos que procesa)
Cabe aclarar que el proceso al principio de todo carga una tabla, la va recorriendo fila por fila y para cada fila llama a una serie de procedimientos y funciones que al terminar de procesar cada una se cierran, por lo que los recursos deberian mantenerse en el tiempo, por lo que he visto, creo que el problema es que las variables instanciadas en cada funcion y procedimiento no liberan espacio una vez terminado el mismo.
Aclaro que el consumo de memoria aumentaba mas rapidamente antes, hasta que coloque en cada procedimiento y funcion el dispose de cada conexion de datos y por eso creo que aparte del dispose, debo colocar algo que elimine las demas variables de la memoria.

Muchas gracias por su ayuda
Juan Pablo
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:Liberar Recursos

Publicado por Damian (824 intervenciones) el 08/05/2010 15:25:01
El tema de liberar recursos es avisarle al Garbage Collector (recolector de basura) que no vamos a usar mas un objeto y lo elimine quitando la última referencia de este.
Una buena solución elegante es crear un método que libere los recursos mantenido por nuestro objeto, por ejemplo:

Class MiClase
....
.....
Public sub Dispose()
ConexionBaseDeDatos = Nothing
ArchivoAbierto = Nothing

'Liberar otros recursos mantenidos por el objeto
End Sub
End Class

Y despues por ejemplo podemos llamar explicitamente por quien utilice la clase en cuestión, por ejemplo:

Dim Instancia as New MiClase

'Úsar la clase normalmente
....
.....
'Liberar los recursos bloqueados por el objeto
Instancia.Dispose

'Eliminar la referencia al objeto
Instancia = Nothing
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