回答:
以下を使用できます。
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()
2回呼び出す必要があります。次に、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
クラスを見てください。