El atributo STAThread y el Garbage Collector

17:09 1 Comments

Hace unos días nos dimos cuenta de que nuestro servidor ocupaba mucha más memoria que unas releases atrás. Despues de varios días de ardua investigación nos dimos cuenta de que el problema venía porque se había añadido por error el atributo STAThread al metodo main de nuestro servidor.

Razón: parece ser que el framework tiene algún problema a la hora de liberar la memoria cuando se utiliza este atributo, de modo que permanecían en memoria multitud de SQLConnections con sus respectivos Strings, RegularExpressions, etc.

Solución: en nuestro caso tan fácil como quitar ese atributo ;-) pero si es necesario trabajar con el, podría llamarse a la función GC.GetTotalMemory(true), y así el Garbage Collector sería capaz de liberar la memoria sin ningún problema. Ojo, no usar el clásico GC.Collect() porque en este caso no sirve de nada.

1 comentarios:

Anónimo dijo...

Very good article, well written and very thought out.