gpt4 book ai didi

c# - 我该如何管理我的内存问题

转载 作者:行者123 更新时间:2023-11-30 22:08:45 25 4
gpt4 key购买 nike

我正在使用 ObservableCollection 来存储有关我的 CPU 使用情况的信息,并将此信息传输到折线图。信息每秒更新一次。它工作正常,但我意识到这会超时阻塞我的内存,因为它只是不断向列表中添加信息。

这种情况下的标准是什么?您是否每分钟重置一次列表?我觉得这会弄乱图表每次重置时的外观。请告诉我如何快速处理这个内存问题。谢谢。

ObservableCollection<KeyValuePair<double, double>> chart1 = new ObservableCollection<KeyValuePair<double, double>>(); 


chart1.Add(new KeyValuePair<double, double>(DateTime.now, getCurrentCpuUsage()));

最佳答案

具体应该做什么取决于您的要求。

如果您只需要保留一定数量的数据(例如 10 分钟或其他),有界队列可能比 ObservableCollection 更合适。这样,“太旧”的事件会自动从数据结构中删除,从而允许您限制内存使用量。

如果您以后仍希望能够访问旧数据,您可以将队列末尾的数据写入文件或数据库,而不是将其丢弃。

有界队列的一种实现见

Limit size of Queue<T> in .NET?

由于您可能需要一个可观察的有界队列,这里有一些关于如何实现一个的注意事项(相当简单)

Observable Stack and Queue

有界队列解释

常规队列就像收银台前的队伍。人们在队伍的末端排队(或者像英国人所说的 queue up),收银员接走排在队伍前面的人。先进先出。先进先出。

有界队列设置了行的最大长度。对于现实生活中的线路,如果线路太长,新人将无法加入。软件中的一些有界队列也以这种方式工作。另一个防止队列长度超过限制的选项是当行太长时从队列的前面移除。在现实生活中,这可能不太公平,但对于软件算法而言,这有时正是您所需要的。

关于c# - 我该如何管理我的内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22076877/

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