我正在调试一个C#应用程序,几天后它几乎没有响应。应用程序每秒计算内存/CPU使用率,并将其显示在主UI的页脚中。
反应迟钝的原因是因为提取数据所需的时间
RawValue
的
PerformanceCounter
(“工作集-专用”)。过了几天,几乎要花一秒钟的时间才能拿到那本书
原始价值
,冻结主UI线程。如果我重新启动我的电脑,几天内一切都会很快,直到它慢慢变得不那么灵敏。如果我在没有
代码(它是开源的),它可以立即正常运行。
static void Main(string[] args)
{
using (var memoryWorkingSetCounter = new PerformanceCounter("Process", "Working Set - Private", Process.GetCurrentProcess().ProcessName, true))
{
while (!Console.KeyAvailable)
{
var memoryWorkingSetSw = new Stopwatch();
memoryWorkingSetSw.Start();
var memoryWorkingSetValue = memoryWorkingSetCounter.RawValue;
memoryWorkingSetSw.Stop();
Console.WriteLine(memoryWorkingSetValue.ToString());
Console.WriteLine(memoryWorkingSetSw.Elapsed.ToString());
Thread.Sleep(TimeSpan.FromSeconds(1));
}
}
Console.Read();
}
我让它运行了约2.5天,并绘制了
Elapsed
什么会导致Windows中的性能计数器随着时间的推移而变慢?另一个应用程序可能没有清理它吗?有没有一种方法可以调试哪些应用程序也在查看这个性能计数器?我在Windows10上。