liberar array de memoria

03/06/2005 - 12:46 por jose_saxo | Informe spam
buenas de nuevo...mi problema esta vez es que tengo un arraylist el cual
relleno con datos, bien consume bastatnte memoria, intento liberarla con
clear pero nada, cada vez que lo vacio y relleno de nuevo consume mas
memoria...como puedo liberarla?¿
saludos

Preguntas similare

Leer las respuestas

#1 jose_saxo
03/06/2005 - 13:57 | Informe spam
mirando la ayuda y debido a que no dispongo del metodo dispose supongo que se
debe usar el finalize este... pero como lo uso ?¿ esta protegido y
tal...habra que sobrecargarlo o sobreescribirlo o algo raro de eso?¿
ayuda please
Respuesta Responder a este mensaje
#2 Tristan
03/06/2005 - 15:59 | Informe spam
Jose, ese tema ya se ha contado muchas veces por aquí.

El consumo de memoria que puedas ver en el adminitsrador de tareas, no solo
de una aplicación .net, sino de muchas otras cosas, no es del todo real. El
framework no libera memoria en tanto en cuanto no sea necesaria. La
destrucción de objetos, liberación y compatación de memoria, es un proceso
costoso y sería ppoco eficiente realizarla cuando sea innecesario.

Si quieres ver el consumo real de tu aplicación, minimizala y vuelvela a
restaurar.

Cuando la memoria sea realmente necesaria, ya sea por que otras aplicaciones
la necesiten o por que no hay memoria en el equipo, el framewortk se
encargará de la tarea de liberarla. En tanto en cuanto no lo haga, las
mediciones que hagas no son fiables.



Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#3 Tristan
03/06/2005 - 16:00 | Informe spam
Ahh, y no. Ni puedes ni deberías aplicar Dispose a un Array. El recolector
de basura se encargará de eso cuando lo considere conveniente, y lo hace de
una forma muy eficiente.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#4 Tristan
03/06/2005 - 16:02 | Informe spam
un posible caso por el cual no se pueda liverar la memoria es que tengas
algun objeto apuntando a algun elemento de tu array y lo mantenga vivo



En efecto, ese sería el único caso en el que realmente el programador debe
hacer algo. Para que un objeto se libere es necesario que no exista ninguna
referencia a él.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#5 Carlos Durán Urenda
03/06/2005 - 16:27 | Informe spam
Hola josé

podrias poner el Array=Nothing

No conozco a fondo el tema, pero la liberacion de memoria no se verá de
inmediato, debido a que el recolector de objetos no utilizados se toma su
tiempo para ver que objetos han sido liverados y hasta entonces se verá que
baja la memoria

Otra cuestion es que toda aplicacion .Net consume bastante memoria mientras
está activa, pero si la minimizas veras una baja considerable en el uso de
la memoria.

podrias forzar a que se ejecute el recolector de objetos no utilizados, pero
yo te recomendaría que mejor confiaras en él, cuando el .Net Framework vea
que realmente hace falta memoria, ejecutará el recolector de objetos no
utilizados y tu memoria será liverada

un posible caso por el cual no se pueda liverar la memoria es que tengas
algun objeto apuntando a algun elemento de tu array y lo mantenga vivo


Saludos
Carlos Durán


"jose_saxo" escribió en el mensaje
news:
mirando la ayuda y debido a que no dispongo del metodo dispose supongo que
se
debe usar el finalize este... pero como lo uso ?¿ esta protegido y
tal...habra que sobrecargarlo o sobreescribirlo o algo raro de eso?¿
ayuda please

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida