응용 프로그램에서 사용 가능한 RAM 또는 메모리를 어떻게 얻을 수 있습니까?
응용 프로그램에서 사용 가능한 RAM 또는 메모리를 어떻게 얻을 수 있습니까?
답변:
당신이 사용할 수있는:
Process proc = Process.GetCurrentProcess();
현재 프로세스를 가져 와서 사용하려면 :
proc.PrivateMemorySize64;
개인 메모리 사용을 얻으려면. 자세한 내용은 이 링크 를 참조하십시오 .
GC.GetTotalMemory 메소드 를 점검 할 수 있습니다 .
가비지 수집기에서 현재 할당 할 것으로 생각되는 바이트 수를 검색합니다.
System.Environment 에는 프로세스 컨텍스트에 매핑 된 실제 메모리의 바이트 수를 포함하는 64 비트 부호있는 정수인 WorkingSet이 있습니다.
많은 세부 정보를 원하면 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
수업을 살펴 봐야합니다 .