使用 Windows 窗体进度条时的“内存泄漏”

本文关键字:内存 泄漏 内存泄漏 窗体 Windows 使用 | 更新日期: 2023-09-27 17:56:57

我正在使用Windows Vista和Visual Studio 2010。我创建了一个 Windows 窗体应用程序,在默认窗体上放置一个文本框和一个进度条,在按钮单击事件处理程序中添加progressBar1.Value = 10;

我开始调试任务管理器报告的应用程序的内存使用情况为 5400k,并且按预期稳定。我单击按钮,进度条值变为 10,应用程序的内存使用量在大约 8700 分半钟内增长到 4k 然后保持稳定。

有人对此有解释吗?并不是说它看起来很关键或任何东西,因为它最终会保持稳定,但这很奇怪,我很好奇。

我注意到,在使用快速移动进度条的应用程序中,在调查无缘无故高达 300 MB 的内存使用情况时。

编辑:

我还在调查第二起案件。但是我说的第一种情况是一个普通的窗体,只有一个进度条和一个按钮。这是来源:

private void button1_Click(object sender, EventArgs e)
{
    progressBar1.Value = 10;
}

使用 Windows 窗体进度条时的“内存泄漏”

.Net 运行时将为应用程序保留内存,即使它不使用它。内存似乎正在使用中,但如果系统开始空闲内存不足,则会释放内存。

您的应用程序可能就是这种情况。运行时保留内存而不实际使用内存。

启动 perf-mon 并查看 .NET 内存代码 - 所有堆中的字节、每一代中的字节、集合等。如果这是稳定的,你没事。

你指的是什么内存使用情况?虚拟集没有任何意义 - 只是堆在重复的垃圾收集运行中变得碎片化。

另外,测试的源代码在哪里?现在,我能想到的是:它一定在你自己的代码中的其他地方:)

可能是当你在调试Visual Studio占用内存而不是你的应用程序时。尝试在发布模式(而不是通过 Visual Studio)IDE 中运行应用程序并检查内存