【问题标题】:Excessive Memory Consumption in blank-ish WinForms application空白的 WinForms 应用程序中的内存消耗过多
【发布时间】:2014-07-19 09:07:05
【问题描述】:

当我的 Windows 窗体应用程序是一个空白应用程序,甚至没有被用户(我)使用时,为什么它会消耗越来越多的内存?

您可以通过以下步骤重现:

  1. 打开 Visual Studio 2013 Ultimate
  2. New Project > C# > Windows Forms Application > .NET Framework 4.5

  3. Toolbox 窗格中将PictureBox 添加到Form1

  4. 右键单击PictureBox 并选择Choose Image...
  5. 选择 GIF 文件
  6. F5
  7. 打开 Task Manager 并观察内存每秒增加 N KB。

出于显而易见的原因,这让我发疯了。我的应用程序从大约

【问题讨论】:

  • 使用内存分析器查看应用中的哪些对象占用了这么多内存。
  • 这是否发生在调试器之外?
  • 没有复制,不能说我期待一个。只是正常的 gen#0 建立起来,然后在第一次收集发生后稳定到大约 5.6M 的私有内存使用量。您需要寻找环境问题,这通常始于反恶意软件和其他非标准插件。
  • 我也无法复制它,但我安装了 .NET 4.5.2。您可以在安装 .NET 4.5.2 的情况下再试一次吗?
  • 不会发生在 w8.1、64bit、vs2013x、up2、.Net 4.5.5 上

标签: c# .net winforms memory


【解决方案1】:

GC 不会收集未使用的内存,因为它非常小。

您可以尝试强制 GC 收集(不是一个好习惯,仅用于测试)

public Form1()
    {
        InitializeComponent();
        _timer.Interval = 10000;
        _timer.Tick += _timer_Tick;
        _timer.Start();
    }

    void _timer_Tick(object sender, EventArgs e)
    {
        GC.Collect();
    }

在此之后,我的 PC 上的内存保持在 3.2 MB :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多