-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");
        }

不过,请听Hans Passant的话,他是对的。不分青红皂白地杀死进程并不是一个好主意。如果您担心某些东西会占用大量内存,请查看制造商是否有办法限制它(如 SQL Server),或者如果是您自己的代码,请修复它。

于 2012-12-14T15:32:27.807 回答