obtener memoria informacion con c#

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 !