2011-05-20 54 views
2

我使用的是Windows Vista和Visual Studio 2010中创建一个Windows窗体应用程序,删除文本框,默认窗体上的进度条,在点击按钮添加progressBar1.Value = 10;事件处理器。“内存泄漏”当使用Windows窗体进度条

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

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

我注意到,当调查使用快速移动进度条的应用程序中,无明显原因的内存使用率高达300 MB时。

编辑:

我还在调查第二个案例。但我所说的第一个案例是一个只有一个进度条和一个按钮的简单表单。这里是来源:

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

一个链接到我的问题其他网站被编辑和删除?你是认真的吗? – user755327 2011-05-20 13:03:39

+0

显然,鲍比认为这没有什么关系呢如果你不同意,只是编辑右后卫,或许促使它为什么值得一提的:) – sehe 2011-05-20 13:44:45

+0

@ user755327,@sehe:我必须道歉,我读那......那不是关于它的。但对于我的辩护,我不得不说,在那个论坛上的讨论似乎完全不相关,因为他正在寻找他的编码代码漏洞,而不是在控制或框架中。如果您觉得我的编辑错误(部分原因,对不起),请随时重新添加链接。 – Bobby 2011-05-20 14:16:40

回答

0

你指的是什么内存使用情况?虚拟集意味着什么 - 仅仅意味着堆在重复的垃圾收集运行中越来越分散。

另外,您测试的源代码在哪里?目前,所有我能想到的是:它必须是别的地方在你自己的代码:)

1

.NET运行库将保留内存,即使它不使用它的应用程序。内存似乎正在使用中,但是如果您的系统在空闲内存上开始变低,它将被释放。

这可能是您的应用程序的情况。运行时保留内存,但不会真正使用它。

+0

仅当您更改进度栏值时,内存使用情况才会上升。 – user755327 2011-05-20 13:08:20

1

火起来穿孔 - 周一,看看.NET内存行情 - 字节中的所有堆,字节每一代,收藏等。如果这是稳定的,你的罚款。

+0

最终稳定。但是由于进度条值的变化而在4:30分钟内增加3300k是很奇怪的。 – user755327 2011-05-20 13:00:18

+1

@ user755327:不,它是你意想不到的。奇怪的是期待电脑做你期望的东西:)垃圾收集使内存使用不确定。堆分析是一个很好的建议 – sehe 2011-05-20 13:46:25

+0

准确地说sehe。随着时间的推移,您将需要知道“正常”是什么样子,当异常发生时,您会认出它。 – n8wrl 2011-05-20 14:44:02

0

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

+0

我试过了。它从3400k开始,在大约4:30分钟内仍然高达6800k。内存使用较少,因为没有调试,但仍然是相同的行为。 – user755327 2011-05-20 13:10:26