¿Cómo puedo obtener la RAM o memoria disponible utilizada por la aplicación?
c#
memory-management
johnnyRose
fuente
fuente
System.Diagnostics.Process
clase.Respuestas:
Puedes usar:
Para obtener el proceso actual y usar:
Para obtener el uso de memoria privada. Para más información mira este enlace .
fuente
GetCurrentProcess
, pero solo necesitas actualizarlos si estás haciendo otras operaciones antes de acceder a las propiedades. Fuente : las observaciones dicen que las propiedades son correctas en el momento en que se crea la instantánea del proceso.Es posible que desee comprobar el GC.GetTotalMemory método .
Recupera el número de bytes que el recolector de basura cree actualmente asignados.
fuente
System.Environment tiene WorkingSet : un entero con signo de 64 bits que contiene la cantidad de bytes de memoria física asignada al contexto del proceso.
Si desea muchos detalles, hay System.Diagnostics.PerformanceCounter , pero será un poco más difícil de configurar.
fuente
Mira aquí para más detalles.
Si obtiene el valor 0, debe llamar
NextValue()
dos veces. Luego da el valor real del uso de la CPU. Ver más detalles aquí .fuente
Además de @JesperFyhrKnudsen 's respuesta y @MathiasLykkegaardLorenzen comentario' s, es mejor que
dispose
los RetornadosProcess
después de usarlo.Entonces, para deshacerse de él
Process
, puede envolverlo en unusing
ámbito o invocarDispose
el proceso devuelto (proc
variable).using
alcance:O
Dispose
método:Ahora podría usar la
memory
variable que se convierte a Megabyte.fuente
^
es XOR bit a bit, no potencia. Así que solo useproc.PrivateMemorySize64 / (1024*1024)
, oproc.PrivateMemorySize64 / (1 << 20)
proc.PrivateMemorySize64 / (1024 * 1024)
como la multiplicación no tiene prioridad sobre la división.Para el sistema completo, puede agregar Microsoft.VisualBasic Framework como referencia;
fuente