Comment obtenir la RAM disponible ou la mémoire utilisée par l'application?
Vous pouvez utiliser:
Process proc = Process.GetCurrentProcess();
Pour obtenir le processus actuel et utiliser:
proc.PrivateMemorySize64;
Pour obtenir l'utilisation de la mémoire privée. Pour plus d'informations, consultez ce lien .
Vous voudrez peut-être vérifier la méthode GC.GetTotalMemory .
Il récupère le nombre d'octets actuellement attribués par le ramasse-miettes.
System.Environment has WorkingSet . Si vous voulez beaucoup de détails, il y a System.Diagnostics.PerformanceCounter , mais la configuration demandera un peu plus d'effort.
Regardez ici pour plus de détails.
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 vous obtenez une valeur égale à 0, vous devez appeler NextValue()
deux fois. Ensuite, il donne la valeur réelle de l'utilisation du processeur. Voir plus de détails ici .
En plus du commentaire de @JesperFyhrKnudsen et du commentaire de @MathiasLykkegaardLorenzen , vous feriez mieux de dispose
le rendu Process
après l'avoir utilisé.
Ainsi, pour disposer de Process
, vous pouvez l'envelopper dans une étendue using
ou appeler Dispose
sur le processus renvoyé (variable proc
).
using
portée:
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;
}
Ou méthode Dispose
:
var memory = 0.0;
Process proc = Process.GetCurrentProcess();
memory = Math.Round(proc.PrivateMemorySize64 / 1e+6, 2);
proc.Dispose();
Vous pouvez maintenant utiliser la variable memory
qui est convertie en mégaoctet.
Pour le système complet, vous pouvez ajouter le Microsoft.VisualBasic Framework comme référence;
Console.WriteLine("You have {0} bytes of RAM",
new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory);
Console.ReadLine();