it-swarm.com.de

So erhalten Sie Speicher verfügbar oder in C # verwendet

Wie kann ich die verfügbaren RAM oder den von der Anwendung verwendeten Speicher erhalten? 

118
user34537

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 .

155

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.

35
CMS

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.

22
Austin

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 .

8
DevT

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

  1. 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;
    }
    
  2. 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.

1
Ahmad Payan

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();
0
PodTech.io