es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Consumo de memoria de hilos en C#

Tengo un proceso que inicia 15 hilos paralelos utilizando Thread.Start(), donde cada hilo está en ApartmentStateSTA. El administrador de memoria de Visual Studio mostró que estos hilos estaban consumiendo cada vez más memoria, así que saqué todo el código útil y me quedé con el siguiente segmento de código. No hace nada más que informar cada vez que el consumo de memoria ha aumentado en 100M. La memoria del proceso comienza en 155M y rápidamente crece a 500M en 30 segundos y continúa creciendo.

¿Qué está consumiendo la memoria o más bien qué truco necesito para detener tal crecimiento tremendo? La declaración GC.Collect no hizo ninguna diferencia y tampoco Sleep (por si necesitaba darle al GC algo de espacio para respirar). Tampoco importa si ejecuto esto en el depurador o como release.exe.

“`
long snapshotMemory = Process.GetCurrentProcess().PagedMemorySize64;
long totalMemory = snapshotMemory;

mientras (verdadero)
{
totalMemory = Process.GetCurrentProcess().PagedMemorySize64;
if (totalMemory – snapshotMemory > 100000000)
{
Console.WriteLine("Memoria=" + (totalMemory/1000000).ToString()+"M");
snapshotMemory = totalMemory;

<pre><code> GC.Collect();
Thread.Sleep(2000);
}
</code></pre>

}
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El segmento de código proporcionado no indica ninguna tarea que consuma memoria. Es posible que el crecimiento de la memoria sea causado por el código que fue eliminado antes de aislar este segmento. Sin embargo, si este no es el caso, es posible que haya una fuga de memoria causada por recursos no administrados en los hilos. Se recomienda implementar la interfaz IDisposable y utilizar la declaración using con cada objeto relevante para garantizar la eliminación adecuada de los recursos cuando ya no sean necesarios. Además, se puede utilizar el ThreadPool en lugar de crear manualmente múltiples hilos, lo que puede ayudar a administrar los recursos de manera más eficiente.

Comments are closed.