Câu trả lời:
Bạn có thể dùng:
Process proc = Process.GetCurrentProcess();
Để có được quy trình hiện tại và sử dụng:
proc.PrivateMemorySize64;
Để có được việc sử dụng bộ nhớ riêng. Để biết thêm thông tin nhìn vào liên kết này .
GetCurrentProcess
, nhưng chỉ cần được làm mới nếu bạn đang thực hiện các thao tác khác trước khi truy cập các thuộc tính. Nguồn - Nhận xét cho biết các thuộc tính là chính xác tại thời điểm ảnh chụp nhanh quá trình được tạo.
Bạn có thể muốn kiểm tra phương thức GC.GetTotalMemory .
Nó lấy ra số byte hiện được cho là do trình thu gom rác phân bổ.
System.En Môi trường có Workset - số nguyên có chữ ký 64 bit chứa số byte bộ nhớ vật lý được ánh xạ tới bối cảnh quy trình.
Nếu bạn muốn có nhiều chi tiết thì có System.Diagnostics.PerformanceCorer , nhưng sẽ cần thêm một chút nỗ lực để thiết lập.
Nhìn vào đây để biết chi tiết.
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);
}
Nếu bạn nhận được giá trị là 0, nó cần gọi NextValue()
hai lần. Sau đó, nó cung cấp giá trị thực tế của việc sử dụng CPU. Xem thêm chi tiết tại đây .
Ngoài @JesperFyhrKnudsen 's câu trả lời và @MathiasLykkegaardLorenzen bình luận' s, bạn muốn tốt hơn dispose
những trởProcess
sau khi sử dụng nó.
Vì vậy, để loại bỏ Process
, bạn có thể gói nó trong một using
phạm vi hoặc gọi Dispose
quá trình trả về ( proc
biến).
using
phạm vi:
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);
}
Hoặc Dispose
phương pháp:
var memory = 0.0;
Process proc = Process.GetCurrentProcess();
memory = Math.Round(proc.PrivateMemorySize64 / (1024*1024), 2);
proc.Dispose();
Bây giờ bạn có thể sử dụng memory
biến được chuyển đổi thành Megabyte.
^
là XOR bitwise, không phải nguồn. Vì vậy, chỉ cần sử dụng proc.PrivateMemorySize64 / (1024*1024)
, hoặcproc.PrivateMemorySize64 / (1 << 20)
proc.PrivateMemorySize64 / (1024 * 1024)
là phép nhân không có mức độ ưu tiên trên phép chia.
Đối với hệ thống hoàn chỉnh, bạn có thể thêm Microsoft.VisualBasic Framework làm tài liệu tham khảo;
Console.WriteLine("You have {0} bytes of RAM",
new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory);
Console.ReadLine();
System.Diagnostics.Process
lớp học.