Uygulama tarafından kullanılan kullanılabilir RAM veya belleği nasıl alabilirim?
Uygulama tarafından kullanılan kullanılabilir RAM veya belleği nasıl alabilirim?
Yanıtlar:
Kullanabilirsiniz:
Process proc = Process.GetCurrentProcess();
Geçerli işlemi almak ve kullanmak için:
proc.PrivateMemorySize64;
Özel bellek kullanımı elde etmek için. Daha fazla bilgi için bu bağlantıya bakın .
GetCurrentProcess
, ama sadece özellikleri erişmeden önce başka işlemler yapıyorsanız yenilenmesi gerekir. Kaynak - Açıklamalar , işlem anlık görüntüsü oluşturulduğu anda özelliklerin doğru olduğunu söylüyor.
GC.GetTotalMemory yöntemini kontrol etmek isteyebilirsiniz .
Çöp toplayıcı tarafından tahsis edildiği düşünülen bayt sayısını alır.
System.Environment sahip WorkingSet işlem bağlamında eşlenen fiziksel bellek bayt sayısını içeren tamsayıdır imzalanan 64-bit -.
Çok fazla ayrıntı istiyorsanız System.Diagnostics.PerformanceCounter var , ancak kurulumu biraz daha fazla çaba gösterecek.
Bakın burada detaylar için.
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);
}
0 olarak değer alırsanız, NextValue()
iki kez çağırmanız gerekir . Daha sonra CPU kullanımının gerçek değerini verir. Daha fazla ayrıntıyı burada görebilirsiniz .
Ek olarak @JesperFyhrKnudsen 'ın cevabı ve @MathiasLykkegaardLorenzen un yorumunu size daha iyi olurdu dispose
döndü Process
kullandıktan sonra.
Yani, imha etmek için Process
, onu bir using
kapsamda sarabilir veya Dispose
döndürülen işlemi ( proc
değişken) çağırabilirsiniz.
using
dürbün:
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);
}
Veya Dispose
yöntem:
var memory = 0.0;
Process proc = Process.GetCurrentProcess();
memory = Math.Round(proc.PrivateMemorySize64 / (1024*1024), 2);
proc.Dispose();
Şimdi memory
Megabayta dönüştürülen değişkeni kullanabilirsiniz .
^
da bit değil XOR, güç değil. Yani sadece kullanın proc.PrivateMemorySize64 / (1024*1024)
veyaproc.PrivateMemorySize64 / (1 << 20)
proc.PrivateMemorySize64 / (1024 * 1024)
çarpma işleminin bölme önceliğine sahip olmaması gerekir.
Tüm sistem için Microsoft.VisualBasic Framework'ü başvuru olarak ekleyebilirsiniz;
Console.WriteLine("You have {0} bytes of RAM",
new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory);
Console.ReadLine();
System.Diagnostics.Process
Sınıfa bir göz atmalısınız .