我想要做的是持续监控所有Windows进程的内存和CPU使用情况,如果某个进程超出限制,我应该能够终止它(假设这个应用程序以管理员权限运行)我有以下代码
private PerformanceCounter theMemCounter = new PerformanceCounter(
"Hyper-v Dynamic Memory VM",
"Physical Memory",
Process.GetCurrentProcess().ProcessName);
但这是一个单一的过程,我应该知道这个过程的名称,请你指导我。
答案 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),或者,如果它是您自己的代码,请修复它。