WebBrowser内存泄露

针对WebBrowser控件导致的内存不断增长问题,本文汇总了多种解决方案,包括动态创建和销毁WebBrowser控件以避免内存泄漏,使用多进程通信减少内存占用,以及通过升级IE或修改注册表来解决问题。文中还提到了通过WindowAPI跨进程通信实现信息传递的实践案例。
摘要由CSDN通过智能技术生成

使用WebBrowser控件开发的程序,占用内存会随着时间不停增长,最终内存溢出导致崩溃。究其原因是由于其自身的缺陷造成的。每一次加载新页面,WebBrowser就会多占用10-20M内存,有资料说是因为其内在的机制没有释放而导致的。这是微软承认的已知BUG,具体的修复补丁点此下载(此补丁似乎只支持XP、2003、Vista)。

《WebBrowser 控件 内存溢出(泄露) 解决方案汇总》这篇文章中给出了几个解决办法,具体的内容如下:

1.建立线程,动态创建WebBrowser,再试用完后freeandnil,线程销毁WebBrowser所占用的内存也随即销毁。

2.建立多程序,通过程序1,调用程序2进行页面访问,当操作完后,程序2退出,内存自动清除回收,程序与程序之间的信息交互可通过ini文件的读取和保存。

3.把IE升级到IE8,如果是使用的VB6开发的程序,可以修改注册表,使程序能够正常运行。修改脚本如下:

  1. Windows Registry Editor Version 5.00
  2. [HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}]
  3. [HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1]
  4. @="Microsoft Internet Controls"
  5. [HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1\0]
  6. [HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1\0\win32]
  7. @="C:\\WINDOWS\\system32\\ieframe.dll

我亲自尝试过第二个解决方案,但是我并没有使用ini文件进行读取和保存信息,而是采用的调用Window API跨进程传递信息来解决的,可以参考这篇文章《Winform跨进程通讯》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值