C# 监视Windows进程是否过度使用内存
我想做的是持续监控所有windows进程的内存和CPU使用情况,如果某个进程超过了限制,我应该能够终止它,只要这个应用程序以管理员权限运行,我有以下代码C# 监视Windows进程是否过度使用内存,c#,.net,windows,process,C#,.net,Windows,Process,我想做的是持续监控所有windows进程的内存和CPU使用情况,如果某个进程超过了限制,我应该能够终止它,只要这个应用程序以管理员权限运行,我有以下代码 private PerformanceCounter theMemCounter = new PerformanceCounter( "Hyper-v Dynamic Memory VM", "Physical Memory", Process.GetCurrentProcess().ProcessName); 但这
private PerformanceCounter theMemCounter = new PerformanceCounter(
"Hyper-v Dynamic Memory VM",
"Physical Memory",
Process.GetCurrentProcess().ProcessName);
但这是针对单个进程的,我应该知道进程的名称,请您指导我。GetCurrentProcess仅指您的程序。请尝试Process.GetProcesses检索计算机上当前运行的所有进程。以下是一些快速代码,可以了解每个进程有多少私有内存:
foreach (var process in Process.GetProcesses().OrderByDescending(process => process.PrivateMemorySize64))
{
Console.WriteLine(process.ProcessName + ": " + process.PrivateMemorySize64 + " bytes");
}
不过,请听我说,他是对的。不加区别地杀死进程不是一个好主意。如果您担心某些东西会占用大量内存,请查看制造商是否有办法像SQL Server那样对其进行限制,或者,如果是您自己的代码,请修复它。在进程使用最多资源时终止进程是确保您对其产生的数据造成的损害最佳不可恢复的最佳方法。特别适用于繁忙的数据库引擎服务。@HansPassant我没听明白你的意思,你是说它好吗?你能告诉我拒绝投票的原因吗?@techno我想大多数人都不喜欢终止随机进程的想法。你能详细说明一下吗?我要求监视,但不确定你要求什么。GetProcesses将返回一个进程实例数组,描述当前在计算机上运行的进程。这些实例提供了大量信息,包括内存使用情况。它们还提供了杀死进程或以其他方式与进程交互的方法。我建议你看一看,谢谢,有没有一种方法可以降低流程优先级,而不是完全取消它。process.PriorityClass是一个读/写属性,它接受ProcessPriorityClass枚举值:Idle、BelowNormal、Normal、Uppernormal、High和RealTime。谢谢Jesse,我的问题被否决了我已经投票决定结束它了,你能帮我改进这个问题还是帮我结束它。