【问题标题】:Memory usage of a Winforms application is different when in debug mode or when older framework is installedWinforms 应用程序的内存使用在调试模式或安装旧框架时有所不同
【发布时间】:2017-05-07 07:31:43
【问题描述】:

我正在 Visual Studio 2013 上开发 C# Winforms 应用程序。 其中一个屏幕使用线程从 MSSQL DB 中获取数据并将它们绘制成表格。

在“App.config”文件中声明的目标 .NET Framework 是 4.0,我的计算机安装了 4.6.2 框架。

  1. 在安装 4.6.2 Framework 并打开上述屏幕的情况下运行应用程序时,进程的内存使用量不断上升 - 例如在 10 分钟内从 550 MB 增加到 2 GB。
  2. 在调试模式下通过 VS 运行同一个应用程序时,打开上面的屏幕,内存使用情况稳定,平均保持在 600 MB。
  3. 当我卸载 4.6.2 框架并返回 4.5.2 时,同一屏幕的内存使用量稳定,大约保持在 600 MB 左右(不是在调试模式下,只是运行 '.exe' 文件)。

有谁知道导致这些行为的原因是什么?

【问题讨论】:

  • 垃圾收集是不确定的。您不能保证特定的内存分配或释放策略。调试构建与发布构建具有不同的行为是合乎逻辑的。垃圾收集很昂贵,因此优化的构建会尽可能地推迟它。显然,在 4.6.2 中对其工作方式进行了调整。为什么这很重要?
  • 为什么重要?使用该软件的客户的计算机性能较弱,RAM 较少,因此应用程序可能会崩溃。我正在尝试了解如何解决这个问题。

标签: c# .net winforms memory visual-studio-2013


【解决方案1】:

通过在发布模式下构建项目解决了问题。 内存使用情况现在很稳定,并且表现正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    相关资源
    最近更新 更多