2009-04-15 5 views

Antwort

129

können Sie verwenden:

Process proc = Process.GetCurrentProcess(); 

den aktuellen Prozess und die Verwendung zu erhalten:

proc.PrivateMemorySize64; 

die private Speichernutzung zu erhalten. Weitere Informationen finden Sie unter this link.

+31

Es sollte wahrscheinlich bemerkt werden, dass ein Aufruf von GetCurrentProcess selbst ziemlich viele Ressourcen zuweisen wird. Rufen Sie Dispose für den zurückgegebenen Prozess auf, wenn Sie fertig sind, oder wickeln Sie den gesamten Code in einen Bereich "using" ein. –

+4

Namensraum: System.Diagnostics Assembly: System (in System.dll) –

+3

Ich mag würde auch hinzufügen, dass die PrivateMemorySize64 Eigenschaft (+ andere Objekte) selbst nicht automatisch bis Refresh() aktualisiert wird, wird aufgerufen. (Es ist auf der Seite über den obigen Link erwähnt.) – ScottRhee

29

Sie könnten die GC.GetTotalMemory Methode überprüfen möchten.

Es ruft die Anzahl von Bytes gedacht derzeit von der Garbage Collector zugeordnet werden.

+7

Nur in verwalteten Heaps. Arkains Antwort sollte sowohl native als auch gemanagte Heaps liefern. – Yaur

6

Blick here für weitere Einzelheiten.

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); 

} 

Wenn Sie Wert 0 bekommen müssen es NextValue() zweimal nennen. Dann gibt es den tatsächlichen Wert der CPU-Nutzung. Sehen Sie mehr Details here.

0

Für das gesamte System können Sie das Microsoft.VisualBasic Framework als Referenz hinzufügen;

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