Come posso ottenere la RAM o la memoria disponibile utilizzata dall'applicazione?
Come posso ottenere la RAM o la memoria disponibile utilizzata dall'applicazione?
Risposte:
Puoi usare:
Process proc = Process.GetCurrentProcess();
Per ottenere il processo corrente e utilizzare:
proc.PrivateMemorySize64;
Per ottenere l'utilizzo della memoria privata. Per maggiori informazioni guarda questo link .
GetCurrentProcess
, ma devono essere aggiornati solo se stai facendo altre operazioni prima di accedere alle proprietà. Origine : le osservazioni indicano che le proprietà sono corrette al momento della creazione dell'istantanea del processo.
Potresti voler controllare il metodo GC.GetTotalMemory .
Recupera il numero di byte attualmente ritenuti assegnati dal Garbage Collector.
System.Environment ha WorkingSet : un numero intero con a 64 bit contenente il numero di byte di memoria fisica mappato al contesto del processo.
Se vuoi molti dettagli c'è System.Diagnostics.PerformanceCounter , ma sarà un po 'più complicato da configurare.
Guarda qui per i dettagli.
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);
}
Se si ottiene un valore pari a 0, è necessario chiamare NextValue()
due volte. Quindi fornisce il valore effettivo dell'utilizzo della CPU. Vedi maggiori dettagli qui .
Oltre a @JesperFyhrKnudsen 'risposta s e @MathiasLykkegaardLorenzen commento' s, è meglio dispose
restituitaProcess
dopo l'uso.
Quindi, per smaltire il Process
, è possibile inserirlo in un using
ambito o richiamare Dispose
il processo restituito ( proc
variabile).
using
scopo:
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 2^20
memory = proc.PrivateMemorySize64 / (1024*1024);
}
O Dispose
metodo:
var memory = 0.0;
Process proc = Process.GetCurrentProcess();
memory = Math.Round(proc.PrivateMemorySize64 / (1024*1024), 2);
proc.Dispose();
Ora puoi usare la memory
variabile che viene convertita in Megabyte.
^
è XOR bit a bit, non potenza. Quindi basta usare proc.PrivateMemorySize64 / (1024*1024)
, oproc.PrivateMemorySize64 / (1 << 20)
proc.PrivateMemorySize64 / (1024 * 1024)
come moltiplicazione non ha una priorità sulla divisione.
Per il sistema completo è possibile aggiungere Microsoft.VisualBasic Framework come riferimento;
Console.WriteLine("You have {0} bytes of RAM",
new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory);
Console.ReadLine();
System.Diagnostics.Process
classe.