Forzar el borrado de un objeto de memoria

31/10/2008 - 01:27 por Carlos | Informe spam
Se que puedo dejarselo al Garbage Collector pero existe alguna forma de
forzar anticipadamente el borrado de un objeto de la memoria, por ejemplo un
DataSet ?

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
31/10/2008 - 08:12 | Informe spam
"Carlos" <carl> wrote in message
news:
Se que puedo dejarselo al Garbage Collector pero existe alguna forma de
forzar anticipadamente el borrado de un objeto de la memoria, por ejemplo
un DataSet ?



El método normal sería el de eliminar todas las referencias al objeto en
cuestión, con lo que a partir de ese momento el Garbage Collector puede
eliminarlo cuando le venga bien. Si no te vale lo de "cuando le venga bien",
y por alguna extraña razón quieres que ocurra de inmediato, puedes llamar a
GC.Collect(); con lo que fuerzas al Garbage Collector a que recoja de
inmediato la memoria que ha sido liberada. Se desaconseja hacer esto, salvo
que tengas una buena razón para ello.
Respuesta Responder a este mensaje
#2 RFOG
31/10/2008 - 10:49 | Informe spam
Y a mi no se me ocurre ninguna situación para hacer eso dentro de una
aplicación normal y corriente... incluyendo las mías... La recolección y
compactación de memoria en .NET parece ser que es una de las cosas que
funcionan bastante bien siempre y cuando no hagamos burradas... aunque
tampoco lo he puesto a prueba nunca...

"Alberto Poblacion" wrote
in message news:
"Carlos" <carl> wrote in message
news:
Se que puedo dejarselo al Garbage Collector pero existe alguna forma de
forzar anticipadamente el borrado de un objeto de la memoria, por ejemplo
un DataSet ?



El método normal sería el de eliminar todas las referencias al objeto
en cuestión, con lo que a partir de ese momento el Garbage Collector puede
eliminarlo cuando le venga bien. Si no te vale lo de "cuando le venga
bien", y por alguna extraña razón quieres que ocurra de inmediato, puedes
llamar a GC.Collect(); con lo que fuerzas al Garbage Collector a que
recoja de inmediato la memoria que ha sido liberada. Se desaconseja hacer
esto, salvo que tengas una buena razón para ello.




Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y programación
Cuando el dinero habla, la verdad calla.
Respuesta Responder a este mensaje
#3 xcal
31/10/2008 - 12:58 | Informe spam
"forzar anticipadamente el borrado de un objeto de la memoria"

por que quieres hacer esto ?, siempre se desaconsejado
hacer esto, y siempre se dice que el Garbage Collector
esta muy bien optimizado para que precisamente,
no tengas este tipo de preocupaciones.

Por ejemplo, un "porque" seria intentar hacer un
programa limpiador de memoria, para que expresamente
puedas ver que tu memoria usada sea menor, el problema
es que las cuestiones de uso de memoria gerenciada no son
simples, y es vez de ayudar, se estropean las cosas.

bueno, esa es mi humilde opinion, Carlos.
Respuesta Responder a este mensaje
#4 Carlos
31/10/2008 - 13:26 | Informe spam
Gracias. Aunque lo bueno claro seria saber por qué se desaconseja tanto
hacer esto. Si no se recomienda a ese extremo, entonces no debería existir
pues el GC.Collect o debería advertirlo en la ayuda por lo menos. De todos
modos es para un caso especial de unas pruebas por un problema de consumo de
memoria en exceso que esta dando una aplicacion y estamos tratando de
evaluar todas las posibles causas para ir descartando. No es para uso
constante, es de suponerse.


"Alberto Poblacion"
escribió en el mensaje news:
"Carlos" <carl> wrote in message
news:
Se que puedo dejarselo al Garbage Collector pero existe alguna forma de
forzar anticipadamente el borrado de un objeto de la memoria, por ejemplo
un DataSet ?



El método normal sería el de eliminar todas las referencias al objeto
en cuestión, con lo que a partir de ese momento el Garbage Collector puede
eliminarlo cuando le venga bien. Si no te vale lo de "cuando le venga
bien", y por alguna extraña razón quieres que ocurra de inmediato, puedes
llamar a GC.Collect(); con lo que fuerzas al Garbage Collector a que
recoja de inmediato la memoria que ha sido liberada. Se desaconseja hacer
esto, salvo que tengas una buena razón para ello.

Respuesta Responder a este mensaje
#5 Pedro
01/11/2008 - 00:09 | Informe spam
Hola Carlos, el manejo de memoria a pesar de todo lo que se dice no deja de
ser un misterio en .Net :)
Chequea este link por si las moscas:

http://angelochoa.blogspot.com/2008...chive.html




"Carlos" <carl> escribió en el mensaje
news:uF$
Gracias. Aunque lo bueno claro seria saber por qué se desaconseja tanto
hacer esto. Si no se recomienda a ese extremo, entonces no debería
existir pues el GC.Collect o debería advertirlo en la ayuda por lo menos.
De todos modos es para un caso especial de unas pruebas por un problema de
consumo de memoria en exceso que esta dando una aplicacion y estamos
tratando de evaluar todas las posibles causas para ir descartando. No es
para uso constante, es de suponerse.


"Alberto Poblacion"
escribió en el mensaje news:
"Carlos" <carl> wrote in message
news:
Se que puedo dejarselo al Garbage Collector pero existe alguna forma de
forzar anticipadamente el borrado de un objeto de la memoria, por
ejemplo un DataSet ?



El método normal sería el de eliminar todas las referencias al objeto
en cuestión, con lo que a partir de ese momento el Garbage Collector
puede eliminarlo cuando le venga bien. Si no te vale lo de "cuando le
venga bien", y por alguna extraña razón quieres que ocurra de inmediato,
puedes llamar a GC.Collect(); con lo que fuerzas al Garbage Collector a
que recoja de inmediato la memoria que ha sido liberada. Se desaconseja
hacer esto, salvo que tengas una buena razón para ello.





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