2009-04-15 18 views

Respuesta

129

Se puede utilizar:

Process proc = Process.GetCurrentProcess(); 

para que el proceso y el uso actual:

proc.PrivateMemorySize64; 

Para obtener el uso de la memoria privada. Para obtener más información, consulte this link.

+31

Probablemente se debe tener en cuenta que una llamada a GetCurrentProcess asignará una gran cantidad de recursos. Llame a Dispose sobre el proceso devuelto cuando termine, o envuelva todo el código en un ámbito de "uso". –

+4

Espacio de nombres: System.Diagnostics Assembly: System (en System.dll) –

+3

También me gustaría añadir que la propiedad PrivateMemorySize64 (+ otras propiedades) no se actualiza automáticamente hasta que se llame a Refresh(). (Se menciona en la página en el enlace de arriba). – ScottRhee

29

Es posible que desee comprobar el método GC.GetTotalMemory.

Recupera la cantidad de bytes que el recolector de basura asigna actualmente.

+7

Sin embargo, solo en montones administrados. La respuesta de Arkain debería dar montones tanto nativos como administrados. – Yaur

6

Mire here para más detalles.

private PerformanceCounter cpuCounter; 
private PerformanceCounter ramCounter; 
public Form1() 
{ 
    InitializeComponent(); 
    InitialiseCPUCounter(); 
    InitializeRAMCounter(); 
    updateTimer.Start(); 
} 

private void updateTimer_Tick(object sender, EventArgs e) 
{ 
    this.textBox1.Text = "CPU Usage: " + 
    Convert.ToInt32(cpuCounter.NextValue()).ToString() + 
    "%"; 

    this.textBox2.Text = Convert.ToInt32(ramCounter.NextValue()).ToString()+"Mb"; 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
} 

private void InitialiseCPUCounter() 
{ 
    cpuCounter = new PerformanceCounter(
    "Processor", 
    "% Processor Time", 
    "_Total", 
    true 
    ); 
} 

private void InitializeRAMCounter() 
{ 
    ramCounter = new PerformanceCounter("Memory", "Available MBytes", true); 

} 

Si obtiene como valor 0 se necesita llamar NextValue() dos veces. Luego da el valor real del uso de la CPU. Ver más detalles here.

0

Para el sistema completo, puede agregar Microsoft.VisualBasic Framework como referencia;

Console.WriteLine("You have {0} bytes of RAM", 
     new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory); 
     Console.ReadLine(); 
Cuestiones relacionadas