监视Windows进程以获取过多的内存使用情况

时间:2012-12-14 14:18:09

标签: c# .net windows process

我想要做的是持续监控所有Windows进程的内存和CPU使用情况,如果某个进程超出限制,我应该能够终止它(假设这个应用程序以管理员权限运行)我有以下代码

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

但这是一个单一的过程,我应该知道这个过程的名称,请你指导我。

2 个答案:

答案 0 :(得分:2)

Process.GetCurrentProcess仅指您的计划。尝试Process.GetProcesses()检索当前在计算机上运行的所有进程。

答案 1 :(得分:1)

以下是一些快速代码,可以了解每个进程存在多少私有内存:

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

虽然,请听Hans Passant,他是对的。不加选择地杀戮过程并不是一个好主意。如果您担心占用大量内存的东西,请查看制造商是否有办法限制它(如SQL Server),或者,如果它是您自己的代码,请修复它。