ฉันจะรับ RAM หรือหน่วยความจำที่แอปพลิเคชันใช้งานได้อย่างไร
ฉันจะรับ RAM หรือหน่วยความจำที่แอปพลิเคชันใช้งานได้อย่างไร
คำตอบ:
คุณสามารถใช้ได้:
Process proc = Process.GetCurrentProcess();
ในการรับกระบวนการปัจจุบันและใช้:
proc.PrivateMemorySize64;
เพื่อรับการใช้งานหน่วยความจำส่วนตัว สำหรับข้อมูลเพิ่มเติมโปรดดูที่ลิงค์นี้
คุณอาจต้องการตรวจสอบเมธอดGC.GetTotalMemory
จะดึงจำนวนไบต์ที่คิดว่าในปัจจุบันจัดสรรโดยตัวรวบรวมขยะ
System.EnvironmentมีWorkingSet - จำนวนเต็มที่ลงนาม 64 บิตที่มีจำนวนไบต์ของหน่วยความจำฟิสิคัลที่แมปกับบริบทของกระบวนการ
หากคุณต้องการรายละเอียดมากมายมีSystem.Diagnostics.PerformanceCounterแต่จะต้องใช้ความพยายามมากขึ้นในการตั้งค่า
ดูรายละเอียดที่นี่
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 จำเป็นต้องเรียกNextValue()
สองครั้ง จากนั้นจะให้ค่าที่แท้จริงของการใช้งาน CPU ดูรายละเอียดเพิ่มเติมที่นี่
นอกจากนี้ในการ@JesperFyhrKnudsen 'คำตอบและ@MathiasLykkegaardLorenzenความคิดเห็นของคุณควรที่จะdispose
กลับมาProcess
หลังจากที่ใช้มัน
ดังนั้นในการกำจัดProcess
คุณสามารถห่อหุ้มไว้ในusing
ขอบเขตหรือเรียกDispose
กระบวนการส่งคืน ( proc
ตัวแปร)
using
ขอบเขต:
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);
}
หรือDispose
วิธีการ:
var memory = 0.0;
Process proc = Process.GetCurrentProcess();
memory = Math.Round(proc.PrivateMemorySize64 / (1024*1024), 2);
proc.Dispose();
ตอนนี้คุณสามารถใช้memory
ตัวแปรที่แปลงเป็นเมกะไบต์
^
คือ XOR แบบบิตไม่ใช่กำลัง เพียงแค่ใช้proc.PrivateMemorySize64 / (1024*1024)
หรือproc.PrivateMemorySize64 / (1 << 20)
proc.PrivateMemorySize64 / (1024 * 1024)
เพราะการคูณไม่มีลำดับความสำคัญเหนือการหาร
สำหรับระบบที่สมบูรณ์คุณสามารถเพิ่ม Microsoft.VisualBasic Framework เป็นข้อมูลอ้างอิงได้
Console.WriteLine("You have {0} bytes of RAM",
new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory);
Console.ReadLine();
System.Diagnostics.Process
ชั้นเรียน