2

.NET 4.5 を使用して C# でプログラムを作成しています。これにより、特定のプロセスのメモリ、CPU、およびネットワークの使用状況を監視し、必要に応じてそのデータをグラフ化できます。

特定のプロセスのメモリ使用量を取得するために、そのオブジェクトのPrivateMemorySize64プロパティをチェックしています。Processそのプロセスで使用されているプラ​​イベート メモリが表示されることを期待していますが、代わりに、Windows リソース モニターで確認されているように、コミットに量が表示されています。

私の質問は次のとおりです。

1) このエラーが発生する理由を知っている人はいますか? 2)それに対する修正はありますか?3) 修正しない場合、プロセス用に予約されたプライベート メモリを取得できる別の簡単な方法はありますか?

私のコードの関連部分は次のとおりです。

using System;

// I add all the open Processes to an array
Process[] localAll = Process.GetProcesses();

// I then add all the processes to a combobox to select from
// There's a button that updates labels with requested info

Process[] p = Process.GetProcessesByName(comboBox1.SelectedItem.ToString());
label1.Text = p[0].PrivateMemorySize64.ToString() + " bytes";
4

1 に答える 1

1

あなたのコメントから、あなたはプライベートワーキングセットを探していると言っていました。このリンクから表示されますプライベートワーキングセット(メモリ)を計算する方法は? それは実際には Process クラスの一部ではありません。代わりに、パフォーマンス カウンターを使用する必要があります。

何らかの理由で削除された場合に備えて、他の回答からコピーして貼り付けます。

using System;
using System.Diagnostics;

class Program {
    static void Main(string[] args) {
        string prcName = Process.GetCurrentProcess().ProcessName;
        var counter = new PerformanceCounter("Process", "Working Set - Private", prcName);
        Console.WriteLine("{0}K", counter.RawValue / 1024);
        Console.ReadLine();
    }
}
于 2014-05-07T22:34:08.810 に答える