如何解决C# WebBrowser 如何减少内存占用/如何解决 WebBrowser 的内存泄漏?
我正在使用 Webbrowser
编写一个程序(我们称之为
总共有大约25个URL需要导航,但我发现
对于这个问题,使用GC显然不是一个有用的解决方案,因为似乎有些对象永远不会被释放,因为我发现当我调用GC时,它只会将物理内存占用转换为虚拟内存占用,总共内存占用永远不会减少。
我已经编写了一些代码来尝试在 tabWindows 像这样关闭时处理它们:
// Find the active page
TabPage page = this._tabControl.SelectedTab;
// Check whether there is actually a page selected
if (page != null)
{
//<try to solve the memory leak -1- start>
ControlCollection controls = page.Controls;
if (controls!=null) {
foreach (Control control in controls) {
if (control != null)
{
control.dispose();
}
}
}
//<try to solve the memory leak -1- end>
// Remove the page
this._tabControl.TabPages.Remove(page);
//<try to solve the memory leak -2- start>
page.dispose();
//<try to solve the memory leak -2- end>
}
上面的代码是按照JDBC内存泄漏的解决方案,但我不太确定,除了控件和页面对象之外还有其他对象需要处理吗?
我不得不在互联网上进行大量搜索,
- 有些线程说会调用一些Windows API,但与GC方案类似;
- 有人说要把IE升级到IE8,但我已经升级到IE11;
- 有些人说是tabControl的bug,IE也有同样的问题,所以我在三台不同的PC上做了这样的测试:
打开一个新选项卡,导航urlA,加载文档后,关闭选项卡,然后再次打开一个新选项卡,导航urlB,加载文档后,关闭选项卡,依此类推...
经过大约五次测试我发现IE占用的内存越来越大,就像
我也做过类似的测试:
打开一个新选项卡,导航到 urlA,加载文档后,导航到 urlB,加载文档后,导航到 urlA,等等......(永远不要关闭 tabPage)。经过大约五次测试,它仍然存在同样的内存增长问题。
那么,如果真的是IE tabControl的bug,有没有什么hotfix或者trick或者手动补丁,甚至一些破解来解决这个bug?或者其他方式?
非常感谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。