-3

私がやろうとしているのは、すべての Windows プロセスのメモリと CPU 使用率を継続的に監視することです。特定のプロセスが制限を超えた場合、それを終了できるはずです (このアプリが管理者権限で実行されている場合)。次のコードがあります。

private PerformanceCounter theMemCounter = new PerformanceCounter(
    "Hyper-v Dynamic Memory VM",
    "Physical Memory",
    Process.GetCurrentProcess().ProcessName); 

しかし、これは単一のプロセス用であり、プロセスを名前で知っている必要があります。これについて教えてください。

4

2 に答える 2

2

Process.GetCurrentProcessあなたのプログラムのみを指します。Process.GetProcesses()マシンで現在実行されているすべてのプロセスを取得してみてください。

于 2012-12-14T14:27:59.587 に答える
1

プロセスごとに存在するプライベートメモリの量を知るための簡単なコードを次に示します。

        foreach (var process in Process.GetProcesses().OrderByDescending(process => process.PrivateMemorySize64))
        {
            Console.WriteLine(process.ProcessName + ": " + process.PrivateMemorySize64 + " bytes");
        }

でも、ハンス・パッサンの言うことを聞いてください、彼は正しいです。プロセスを無差別に強制終了することは、良い考えではありません。何かが多くのメモリを消費することを心配している場合は、製造元がそれを制限する方法 (SQL Server など) を持っているかどうかを確認するか、それが独自のコードである場合は修正してください。

于 2012-12-14T15:32:27.807 に答える