【发布时间】:2017-05-07 07:31:43
【问题描述】:
我正在 Visual Studio 2013 上开发 C# Winforms 应用程序。 其中一个屏幕使用线程从 MSSQL DB 中获取数据并将它们绘制成表格。
在“App.config”文件中声明的目标 .NET Framework 是 4.0,我的计算机安装了 4.6.2 框架。
- 在安装 4.6.2 Framework 并打开上述屏幕的情况下运行应用程序时,进程的内存使用量不断上升 - 例如在 10 分钟内从 550 MB 增加到 2 GB。
- 在调试模式下通过 VS 运行同一个应用程序时,打开上面的屏幕,内存使用情况稳定,平均保持在 600 MB。
- 当我卸载 4.6.2 框架并返回 4.5.2 时,同一屏幕的内存使用量稳定,大约保持在 600 MB 左右(不是在调试模式下,只是运行 '.exe' 文件)。
有谁知道导致这些行为的原因是什么?
【问题讨论】:
-
垃圾收集是不确定的。您不能保证特定的内存分配或释放策略。调试构建与发布构建具有不同的行为是合乎逻辑的。垃圾收集很昂贵,因此优化的构建会尽可能地推迟它。显然,在 4.6.2 中对其工作方式进行了调整。为什么这很重要?
-
为什么重要?使用该软件的客户的计算机性能较弱,RAM 较少,因此应用程序可能会崩溃。我正在尝试了解如何解决这个问题。
标签: c# .net winforms memory visual-studio-2013