【发布时间】:2012-12-27 00:24:43
【问题描述】:
我的问题是我创建了一个简单的应用程序,我可以在其中进行浏览器控制。它每 20 秒导航到一个新站点。在应用程序占用的一些导航内存增加之后。我尝试处理、删除并重新创建 webrouser 控件,但未能成功。释放应用程序所有资源的唯一方法是重新启动它。我花了很多精力试图解决这个问题。请给我一些提示或链接,我可以在其中阅读。提前致谢。
实际的代码比演示的要大很多,但思路是一样的。代码如下所示:
for (int i = 0; i < 100000; i++)
{
webBrowser1.Navigate("http://stackoverflow.com");
Wait(20000);
}
方法定义:
private void Wait(long value)
{
Stopwatch sw = new Stopwatch();
sw.Start();
while (sw.ElapsedMilliseconds < value)
Application.DoEvents();
}
问题现在不是实际的,因为解决方案是通过使用另一个名为 WebKitBrowser 的浏览器控件找到的。感谢所有试图帮助我的人。这是我在这个精彩网站上的第一个问题。我很喜欢它。
【问题讨论】:
-
memory occupied by the application increases是由什么因素决定的?您的代码似乎没有创建很多内存,可能错误在其他地方 -
伊利亚,确实如此。只需检查一下,您就会发现内存显着增加。感谢您提供的链接。我会尽量按照建议做。
-
这是一个实际的问题,还是您只是在任务管理器中看到数字上升了?
-
请记住,“我的程序使用了多少内存”是一个在现代操作系统中非常难以定义的概念,尤其是在托管程序中。 .NET 运行时可能不会将内存返回给操作系统,而只是暂时不使用它——因为大多数程序的内存使用会在一个很小的范围内波动,这可以避免过多的系统调用。当测量的内存使用量没有像您认为应该的那样下降时,您就没有内存泄漏;更好的指标是内存使用量无限增长。