sobre administracion de memoria en conexiones a Bases de datos

12/04/2004 - 22:10 por Pepe | Informe spam
Dentro de la aplicación Abro una conexión
(SqlConnection), hago una consulta, cierro la conexion y
proceso los datos.

El problema radica en que cuando libero los recursos de
los datos (ya sea un DataSet, o un ArrayList), nunca se
libera la memoria. Y si vuelvo a consultar los datos, la
aplicación gasta mas memoria. Por ejemplo:

Memoria ocupada por el programa:

-Antes de consulta 24 mb.
-Despues de consulta 50 Mb.


- Reperir la consulta 75 mb.

El punto es que quiero liberar los recursos que gasta
cada consulta cuando ya no necesito los datos.

¿Que puedo hacer?
 

Leer las respuestas

#1 Pedro Luna Montalvo
13/04/2004 - 05:20 | Informe spam
Los recursos seran liberados cuando el colector de basura encuentre que
dichos objetos ya no son utilizados mas, y esto puede ocurrir despues de
algun tiempo o de forma inmediata.

La mayoria de los componentes que consumen recursos valiosos cuentan con un
metodo para liberar esos recursos de forma explicita, y asi podemos
recuperar dichos recursos en lugar de tener que esperar que el colector haga
su trabajo.

Utiliza el metodo Dispose() de dichos componentes, si lo implementan, para
obligarlos a que liberen sus recursos.

Si aun tu estado es critico, pueden obligar al colector a liberar todos los
objetos que no estan en uso en determinado momento:
System.GC.Collect();
System.GC.WaitForPendingFinalizers();

pero cuidado con estas sentencias!!! si las usas mucho en tu aplicacion
pueden degradar su rendimiento.

Espero esto ayude ...

Saludos
Pedro Luna
Gye, Ecu


"Pepe" escribió en el mensaje
news:16f9601c420ca$2da6df50$
Dentro de la aplicación Abro una conexión
(SqlConnection), hago una consulta, cierro la conexion y
proceso los datos.

El problema radica en que cuando libero los recursos de
los datos (ya sea un DataSet, o un ArrayList), nunca se
libera la memoria. Y si vuelvo a consultar los datos, la
aplicación gasta mas memoria. Por ejemplo:

Memoria ocupada por el programa:

-Antes de consulta 24 mb.
-Despues de consulta 50 Mb.


- Reperir la consulta 75 mb.

El punto es que quiero liberar los recursos que gasta
cada consulta cuando ya no necesito los datos.

¿Que puedo hacer?

Preguntas similares