【发布时间】:2020-04-17 08:38:59
【问题描述】:
背景:我有一个 c# winform 应用程序,它每秒加载一次图像,并在不再需要它们时处理它们。
我在任务管理器中注意到应用程序的内存使用每隔几分钟就会波动一次。例如:应用程序将以 14.1MB -> 14.2MB -> 14.3MB...运行一段时间...16.3MB....
然后 5 分钟后,内存使用量从 16.3MB 波动如下:16.3MB -> 25.3MB -> 16.1MB -> 25.2MB,并将继续这种模式 10 到 15 秒,然后再次稳定在 14.0MB。
有时我注意到内存也会波动。例如:14.6MB -> 10.4MB -> 14.7MB -> 11.5MB 等几秒钟,然后再次拉平。
我知道不看代码就很难说出问题所在,但什么会导致这种情况发生?这是GC运行吗?是内存泄漏吗?这是我应该担心的事情还是在应用程序运行时经常发生这种情况?该应用程序可以运行几个小时而不会崩溃,所以这让我想知道发生了什么。我还没有运行超过 9 个小时,所以我不知道会发生什么。
让我知道你们的想法,我很感激你对此事的任何想法。
谢谢。
【问题讨论】:
-
如果您打开“诊断工具”面板,它会在 GC 启动时向您显示(以及何时启动,即使您认为 应该)。您的应用似乎不会以任何方式产生内存压力,因此 GC 可能看起来惰性,但您可能不希望它更频繁地进行干预。它不是免费的。您在内存使用方面有几个跳跃,但这甚至可能不完全取决于您的 代码。您没有发布的内容,仅此而已;)
-
感谢您的意见。我会做更多的测试,并确保使用诊断工具。感谢您的宝贵时间!
标签: c# winforms memory-management