我使用 .NET 8 构建了 WPF 应用程序,在某些时候它的 CPU 和内存突然激增。我设法捕获内存快照,似乎分配了很多
TimerQueueTimer
对象,不确定它们来自哪里。
这是截图:
有人有过这样的经历吗?我在这里看到了它:太多的 TimerQueueTimer 对象被分配并消耗高内存
但那是一个 ASP.NET 应用程序,通过更新到 ASP.NET Core 解决了问题,而我的是 WPF。
应用程序运行良好约 1 天,但 CPU 和内存消耗突然激增。它通常不应消耗更多~100M 的托管内存。
我也遇到了同样的问题,发现我有一个循环如下
while (true) {
var cancelSource = new CancellationTokenSource();
cancelSource.CancelAfter(50);
var item = queue.Take(cancelSource.Token);
if (!state.isValid(item)){
queue.Add(item);
}
}
由于 if 条件总是被满足,它会创建新的
` CancellationTokenSource ` 并在 cancelSource.CancelAfter(50) 中它将创建 TimerQueueTimer 对象。