Como vaciar la memoria

27/12/2006 - 11:48 por Diegoc | Informe spam
Buenos dias,
Estoy haciendo un proceso muy muy largo, de cierre de historicos de una
base de datos. El caso es que llamo a objetos anidados y luego tengo
que irlos quitando de memoria.
Hago lo siguiente:
Todos los objetos los he creado con un dispose() donde vacio los datos
que poseen y lo ejecuto al terminar. Tras esto, igualo el objeto a null
( no se si esto vale para algo)
Pese a todo, la memoria sigue subiendo, no muy rapido, pero teniendo en
cuenta que el proceso durará varios dias, puede saturarme el servidor.
Mis preguntas son:
Cuando se crea una variable dentro de una funcion, cuando se termina la
funcion, ¿es necesario hacer algo con esa variable?
funtion xxx()
{
DataTable dt.
...
dt.Dispose(); ??
dt=null; ??
}

Si tengo una variable que se refiere a un objeto creado por mi, y le
asigno un nuevo valor, debo primero hacer un dispose de la variable?

De donde puedo rascar la memoria que todavía sigue asignadose y que no
se me ocurre de donde puede salir?
Los string tambien hay que igualarlos a null?

Muchas gracias
Diego

Preguntas similare

Leer las respuestas

#1 Bela Istok
27/12/2006 - 20:08 | Informe spam
Ok vamos por parte:
1.- Las variables que se crean dentro de una función mueren cuando esa
función se termina.
2.- Al momento de no tener una referencia, el garbage colector deberia
encargarse de ella.
3.- Verifica bien las asignaciones de memoria a ver si son ciclicas, si cada
x cantidad de tiempo te incrementa un x %, entonces tienes que revisar muy
bien el codigo que estas ejecutando, porque en teoria, si vas creando y
destruyendo objetos, la memoria deberia mantenerse constante.

Saludos,

Bela Istok
"Diegoc" wrote in message
news:
Buenos dias,
Estoy haciendo un proceso muy muy largo, de cierre de historicos de una
base de datos. El caso es que llamo a objetos anidados y luego tengo
que irlos quitando de memoria.
Hago lo siguiente:
Todos los objetos los he creado con un dispose() donde vacio los datos
que poseen y lo ejecuto al terminar. Tras esto, igualo el objeto a null
( no se si esto vale para algo)
Pese a todo, la memoria sigue subiendo, no muy rapido, pero teniendo en
cuenta que el proceso durará varios dias, puede saturarme el servidor.
Mis preguntas son:
Cuando se crea una variable dentro de una funcion, cuando se termina la
funcion, ¿es necesario hacer algo con esa variable?
funtion xxx()
{
DataTable dt.
...
dt.Dispose(); ??
dt=null; ??
}

Si tengo una variable que se refiere a un objeto creado por mi, y le
asigno un nuevo valor, debo primero hacer un dispose de la variable?

De donde puedo rascar la memoria que todavía sigue asignadose y que no
se me ocurre de donde puede salir?
Los string tambien hay que igualarlos a null?

Muchas gracias
Diego
Respuesta Responder a este mensaje
#2 Alhambra-Eidos
29/12/2006 - 12:48 | Informe spam
Para objetos como Dataset o Datatable, había oído que lo mejor para tema de
memoria es hacer un Clear de sus elementos antes del dispose().

Conocen alguna herramienta buena para analizar estado de la memoria con
.NET???

saludos.
http://www.alhambra-eidos.com/web2005/index.html


"Bela Istok" wrote:

Ok vamos por parte:
1.- Las variables que se crean dentro de una funcin mueren cuando esa
funcin se termina.
2.- Al momento de no tener una referencia, el garbage colector deberia
encargarse de ella.
3.- Verifica bien las asignaciones de memoria a ver si son ciclicas, si cada
x cantidad de tiempo te incrementa un x %, entonces tienes que revisar muy
bien el codigo que estas ejecutando, porque en teoria, si vas creando y
destruyendo objetos, la memoria deberia mantenerse constante.

Saludos,

Bela Istok
"Diegoc" wrote in message
news:
Buenos dias,
Estoy haciendo un proceso muy muy largo, de cierre de historicos de una
base de datos. El caso es que llamo a objetos anidados y luego tengo
que irlos quitando de memoria.
Hago lo siguiente:
Todos los objetos los he creado con un dispose() donde vacio los datos
que poseen y lo ejecuto al terminar. Tras esto, igualo el objeto a null
( no se si esto vale para algo)
Pese a todo, la memoria sigue subiendo, no muy rapido, pero teniendo en
cuenta que el proceso durar varios dias, puede saturarme el servidor.
Mis preguntas son:
Cuando se crea una variable dentro de una funcion, cuando se termina la
funcion, es necesario hacer algo con esa variable?
funtion xxx()
{
DataTable dt.
...
dt.Dispose(); ??
dt=null; ??
}

Si tengo una variable que se refiere a un objeto creado por mi, y le
asigno un nuevo valor, debo primero hacer un dispose de la variable?

De donde puedo rascar la memoria que todava sigue asignadose y que no
se me ocurre de donde puede salir?
Los string tambien hay que igualarlos a null?

Muchas gracias
Diego

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida