c# - memoria - Conseguir el uso del ram del proceso.
obtener informacion del hardware con c# (3)
He estado teniendo algunos problemas para averiguar cómo exactamente obtengo el uso de un ram del proceso. (La cantidad de RAM que consume actualmente, no la cantidad reservada, o su máximo o mínimo)
Digamos que tengo un proceso que se ejecuta en segundo plano, Java.exe, se permite usar 1024 mb de RAM, ¿cómo puedo saber la cantidad de RAM que está utilizando actualmente?
Yo mismo estoy iniciando el proceso, así que tengo acceso al objeto Proceso, solo me gustaría un poco más de aclaración sobre qué propiedad es la única para mí.
Encontré esto en msdn y está funcionando
System.Diagnostics.Process proc = assign your process here :-)
int memsize = 0; // memsize in Megabyte
PerformanceCounter PC = new PerformanceCounter();
PC.CategoryName = "Process";
PC.CounterName = "Working Set - Private";
PC.InstanceName = proc.ProcessName;
memsize = Convert.ToInt32(PC.NextValue()) / (int)(1024);
PC.Close();
PC.Dispose();
Si está puramente interesado en la memoria física, probablemente desee WorkingSet64 , que proporciona "la cantidad de memoria física asignada para el proceso asociado". Comprenda que este valor fluctúa constantemente y que el valor que esta llamada le brinda puede no estar actualizado. Es posible que también esté interesado en PeakWorkingSet64 , que proporciona "la cantidad máxima de memoria física utilizada por el proceso asociado".
genial, quería que esto obtuviera lo mismo que se muestra en el administrador de tareas e intenté:
Process.PrivateMemorySize64
Process.PeakVirtualMemorySize64
Process.PeakPagedMemorySize
Process.PagedSystemMemorySize64
Process.PagedMemorySize64
Process.NonpagedSystemMemorySize64
Process.WorkingSet64
¡Y ninguno de ellos funcionó, pero el Contador de Rendimiento sí!
PerformanceCounter PC = new PerformanceCounter();
PC.CategoryName = "Process";
PC.CounterName = "Working Set - Private";
PC.InstanceName = "processNameHere";
memsize = Convert.ToInt32(PC.NextValue()) / (int)(1024);
PC.Close();
PC.Dispose();
muchas gracias !