gpt4 book ai didi

c# - 为什么我的应用程序随着时间的推移变得响应速度变慢?

转载 作者:可可西里 更新时间:2023-11-01 08:29:53 29 4
gpt4 key购买 nike

我正在调试一个 C# 应用程序,它在几天后变得几乎没有响应。应用程序每秒计算一次内存/CPU 使用率,并将其显示在主 UI 的底部。

无响应的原因是获取 PerformanceCounter(“Working Set - Private”)的 RawValue 需要时间。几天后,获取 RawValue 几乎需要一秒钟,卡住了主 UI 线程。如果我重新启动我的计算机,几天内一切都会再次变快,直到它慢慢变得不那么敏感。如果我在没有 PerformanceCounter 代码(它是开源的)的情况下重新编译这个应用程序,它会立即正常运行。

要排除它是应用程序的可能性,这里有一些示例代码执行完全相同的操作:

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 时间:

graph

什么会导致 Windows 中的性能计数器随着时间的推移变慢?另一个应用程序不能清理它吗?有没有办法调试哪些应用程序也在查看此性能计数器?我在 Windows 10 上。

最佳答案

为什么要在循环内声明秒表?删除任何可能在循环内的新声明。

当你这样做时,内存会随着时间的推移而增加,你指望垃圾收集器来完成这项工作

关于c# - 为什么我的应用程序随着时间的推移变得响应速度变慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53797800/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com