Bagaimana saya bisa mendapatkan RAM atau memori yang tersedia yang digunakan oleh aplikasi?
Bagaimana saya bisa mendapatkan RAM atau memori yang tersedia yang digunakan oleh aplikasi?
Jawaban:
Kamu bisa memakai:
Process proc = Process.GetCurrentProcess();
Untuk mendapatkan proses dan penggunaan saat ini:
proc.PrivateMemorySize64;
Untuk mendapatkan penggunaan memori pribadi. Untuk informasi lebih lanjut, lihat tautan ini .
GetCurrentProcess
, tetapi hanya perlu di-refresh jika Anda melakukan operasi lain sebelum mengakses properti. Sumber - Komentar mengatakan properti sudah benar pada saat snapshot proses dibuat.
Anda mungkin ingin memeriksa metode GC.GetTotalMemory .
Ini mengambil jumlah byte yang saat ini dianggap dialokasikan oleh pengumpul sampah.
System.Environment memiliki WorkingSet - bilangan bulat 64-bit yang berisi jumlah byte memori fisik yang dipetakan ke konteks proses.
Jika Anda menginginkan banyak detail, ada System.Diagnostics.PerformanceCounter , tetapi penyiapannya akan sedikit lebih sulit.
Lihat di sini untuk detailnya.
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);
}
Jika Anda mendapatkan nilai 0 itu perlu memanggil NextValue()
dua kali. Kemudian memberikan nilai sebenarnya dari penggunaan CPU. Lihat detail selengkapnya di sini .
Selain @JesperFyhrKnudsen 's jawaban dan @MathiasLykkegaardLorenzen komentar' s, Anda sebaiknya dispose
dikembalikanProcess
setelah menggunakannya.
Jadi, Untuk membuang Process
, Anda dapat membungkusnya dalam sebuah using
lingkup atau memanggil Dispose
proses yang dikembalikan ( proc
variabel).
using
cakupan:
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);
}
Atau Dispose
metode:
var memory = 0.0;
Process proc = Process.GetCurrentProcess();
memory = Math.Round(proc.PrivateMemorySize64 / (1024*1024), 2);
proc.Dispose();
Sekarang Anda bisa menggunakan memory
variabel yang diubah menjadi Megabyte.
^
adalah XOR bitwise, bukan daya. Jadi gunakan saja proc.PrivateMemorySize64 / (1024*1024)
, atauproc.PrivateMemorySize64 / (1 << 20)
proc.PrivateMemorySize64 / (1024 * 1024)
karena perkalian tidak memiliki prioritas di atas pembagian.
Untuk sistem lengkap Anda dapat menambahkan Kerangka Microsoft.VisualBasic sebagai referensi;
Console.WriteLine("You have {0} bytes of RAM",
new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory);
Console.ReadLine();
System.Diagnostics.Process
kelasnya.