Existe un programa para controlar la memoria

16/01/2007 - 18:25 por Diegoc | Informe spam
Buenas tardes,
me estoy volviendo loco con un programa que tengo que va cargando la
memoria y no consigo que vuelva a su situación incial. He ido
controlando todas las variables que veo, pero parece ser que alguna se
me escapa y me gustaría saber si existe algun programa que me diga lo
que se va cargando en la memoria... seguramente no exista pero alguien
me puede decir como hacerlo?
Gracias

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
16/01/2007 - 18:38 | Informe spam
"Diegoc" wrote in message
news:
me estoy volviendo loco con un programa que tengo que va cargando la
memoria y no consigo que vuelva a su situación incial.



Probablemente te has topado con el mecanismo de recogida de memoria de
.Net, que no funciona igual que el de otros lenguajes. En .Net, cuando un
objeto se "sale de alcance" ("goes out of scope") o cuando lo liberas
asignándole un null, no se recupera de forma inmediata la memoria que estaba
consumiendo. Símplemente permanece "consumida", hasta que se llega a un
punto en que toda la memoria está ocupada o se necesita para otros fines,
momento en el que arranca el Garbage Collector y recupera la memoria de esos
objetos que son inalcanzables, por haber sido destruidas todas las
referencias a los mismos. Mientras no se dispara este proceso de recogida,
el programa aparenta estar creciendo en memoria sin ninguna limitación.

Si quieres disparar a mano el proceso de recogida, puedes hacerlo con la
instrucción System.GC.Collect();. Microsoft recomienda utilizarlo solo para
pruebas, pero en los programas que estén en productivo, dejar que el
recogedor de basura se dispare automáticamente cuando el sistema lo
considere oprtuno, en lugar de lanzarlo a mano con esa instrucción.
Respuesta Responder a este mensaje
#2 Alfredo Crisostomo
16/01/2007 - 19:28 | Informe spam
Segun lo que expresas, significa que en una aplicacion de .NET normalmente
no debo preocuparme por la recolección de basura ya que es automática ??



"Alberto Poblacion"
escribió en el mensaje news:%
"Diegoc" wrote in message
news:
me estoy volviendo loco con un programa que tengo que va cargando la
memoria y no consigo que vuelva a su situación incial.



Probablemente te has topado con el mecanismo de recogida de memoria de
.Net, que no funciona igual que el de otros lenguajes. En .Net, cuando un
objeto se "sale de alcance" ("goes out of scope") o cuando lo liberas
asignándole un null, no se recupera de forma inmediata la memoria que
estaba consumiendo. Símplemente permanece "consumida", hasta que se llega
a un punto en que toda la memoria está ocupada o se necesita para otros
fines, momento en el que arranca el Garbage Collector y recupera la
memoria de esos objetos que son inalcanzables, por haber sido destruidas
todas las referencias a los mismos. Mientras no se dispara este proceso de
recogida, el programa aparenta estar creciendo en memoria sin ninguna
limitación.

Si quieres disparar a mano el proceso de recogida, puedes hacerlo con la
instrucción System.GC.Collect();. Microsoft recomienda utilizarlo solo
para pruebas, pero en los programas que estén en productivo, dejar que el
recogedor de basura se dispare automáticamente cuando el sistema lo
considere oprtuno, en lugar de lanzarlo a mano con esa instrucción.



Respuesta Responder a este mensaje
#3 Alberto Poblacion
16/01/2007 - 19:32 | Informe spam
"Alfredo Crisostomo" wrote in message
news:%
Segun lo que expresas, significa que en una aplicacion de .NET normalmente
no debo preocuparme por la recolección de basura ya que es automática ??



Efectivamente, eso es lo que dice la documentación de Microsoft: "No os
preocupeis, que los automatismos que hemos preparado para vosotros ya se
encargarán de hacer lo que tengan que hacer cuando sea necesario hacerlo".
Mi experiencia hasta ahora ha sido que funciona bastante bien, y que
efectivamente bajo circunstancias normales no hace falta tocar nada.
Respuesta Responder a este mensaje
#4 Alfredo Crisostomo
16/01/2007 - 19:46 | Informe spam
Excelente!! gracias por la explicación.
Ya me está gustando algo de .NET ;-)

"Alberto Poblacion"
escribió en el mensaje news:
"Alfredo Crisostomo" wrote in message
news:%
Segun lo que expresas, significa que en una aplicacion de .NET
normalmente no debo preocuparme por la recolección de basura ya que es
automática ??



Efectivamente, eso es lo que dice la documentación de Microsoft: "No os
preocupeis, que los automatismos que hemos preparado para vosotros ya se
encargarán de hacer lo que tengan que hacer cuando sea necesario hacerlo".
Mi experiencia hasta ahora ha sido que funciona bastante bien, y que
efectivamente bajo circunstancias normales no hace falta tocar nada.



Respuesta Responder a este mensaje
#5 Diegoc
17/01/2007 - 11:50 | Informe spam
Yo si que utilizo el GC.Collect, pero no hace nada. Y entodos los
sitios que miro dicen que debo de tener algo que me falta por
desasignar de la memoria... Lo malo es que no se lo que es. He
conseguido bajarla muchisimo, antes se me saturaba en 5 minutos, ahora
tarda varias horas, pero al final se satura. ¡¡¡Socorro!!!


On Jan 16, 7:46 pm, "Alfredo Crisostomo"
wrote:
Excelente!! gracias por la explicación.
Ya me está gustando algo de .NET ;-)

"Alberto Poblacion"
escribió en el mensajenews:



> "Alfredo Crisostomo" wrote in message
>news:%
>> Segun lo que expresas, significa que en una aplicacion de .NET
>> normalmente no debo preocuparme por la recolección de basura ya que es
>> automática ??

> Efectivamente, eso es lo que dice la documentación de Microsoft: "No os
> preocupeis, que los automatismos que hemos preparado para vosotros ya se
> encargarán de hacer lo que tengan que hacer cuando sea necesario hacerlo".
> Mi experiencia hasta ahora ha sido que funciona bastante bien, y que
> efectivamente bajo circunstancias normales no hace falta tocar nada.- Hide quoted text -- Show quoted text -
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida