• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

Ayuda en c#

JeeZy

Nuevo
Registrado
28 Nov 2017
Mensajes
4
Puntos
0
Edad
29
hola, cree en c# una consola y utiliza sockets y otras cosas, el es que me consume mucha memoria ram y otros recursos, que podría hacer para que me funcione bien o no me consuma recursos o utilice muy pocos. Gracias.
 
A ver C# usa el GC (Garbaje Collector) por lo que tu no controlas la memoria que creas... pero tienes varias formas de trabajo a seguir:

- Llamar directamente al GC cada vez que consideres con GC.Collect() ... creo, esto no garantiza que se vacie la memoria, simplemente le dices a CSharp: "Oye a ver si puedes borrar memoria sin uso y CSharp dice bueno va luego me paso y miro", ten cuenta que cada vez que hagas un new en .NET se guarda un registro de todos esos objectos y GC solo borra los objetos que dejan de estar referenciados en el programa, osea, cuando termines con un objecto haz: objeto = null; pero tampoco te pases llamando al GC porque gasta bastante tiempo de la CPU
- Usar el método Dispose() cuando termines de trabajar con un objeto, este método existe en todas las clases que reservan recursos como por ejemplo conectores a base de datos, contenedores de Bitmaps, ... lo que hace es liberarlos, por ejemplo en un conector a base de datos lo que haria es liberar el socket, si solo lo asignas a NULL el socket sigue estando abierto lo cual repercute en tener mas conexiones abiertas a la base de datos
- Si tus clases son de usar recursos a saco hazles que hereden de IDisposable para implementar el método Dispose()... lo cual debes programar tu... tu sabras lo que tienes que liberar
- Utilizar using, si la forma de trabajar con dispose seria:

ClaseChupaRecursos a = new ClaseChupaRecursos(Recursos.ATope);
try
{
//Hago lo que tenga que hacer con a
}
finally
{
a.Dispose(); //pete o no pete libero recursos
}

con using ahorras codigo y hace lo mismo:

using(ClaseChupaRecursos a = new ClaseChupaRecursos(Recursos.ATope))
{
//Hago lo que tenga que hacer con a
}
 
Arriba