Wie kann ich die verfügbaren RAM oder den von der Anwendung verwendeten Speicher erhalten?
Sie können verwenden:
Process proc = Process.GetCurrentProcess();
Um den aktuellen Prozess abzurufen und zu verwenden:
proc.PrivateMemorySize64;
Um die private Speichernutzung zu erhalten. Weitere Informationen finden Sie unter diesem Link .
Möglicherweise möchten Sie die GC.GetTotalMemory -Methode überprüfen.
Er ruft die Anzahl der Bytes ab, von denen angenommen wird, dass sie vom Garbage Collector zugewiesen werden.
System.Environment has WorkingSet . Wenn Sie viele Details wünschen, gibt es System.Diagnostics.PerformanceCounter , aber es wird ein wenig mehr Aufwand beim Setup sein.
Siehe here für Details.
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 den Wert 0 erhalten, müssen Sie NextValue()
zweimal aufrufen. Dann gibt es den tatsächlichen Wert der CPU-Auslastung an. Mehr Details hier .
Zusätzlich zu @JesperFyhrKnudsen s Antwort und @MathiasLykkegaardLorenzen s Kommentar, sollten Sie nach der Verwendung von dispose
die zurückgegebene Process
lieber zurückgeben.
Um die Process
zu entsorgen, können Sie sie in einen using
-Bereich einwickeln oder Dispose
für den zurückgegebenen Prozess aufrufen (proc
-Variable).
using
Geltungsbereich:
var memory = 0.0;
using (Process proc = Process.GetCurrentProcess())
{
// The proc.PrivateMemorySize64 will returns the private memory usage in byte.
// Would like to Convert it to Megabyte? divide it by 1e+6
memory = proc.PrivateMemorySize64 / 1e+6;
}
Oder Dispose
-Methode:
var memory = 0.0;
Process proc = Process.GetCurrentProcess();
memory = Math.Round(proc.PrivateMemorySize64 / 1e+6, 2);
proc.Dispose();
Jetzt können Sie die Variable memory
verwenden, die in Megabyte konvertiert wird.
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();