zoukankan      html  css  js  c++  java
  • WebBrowser内存泄露

    使用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_ROOTTypeLib{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}]
    3. [HKEY_CLASSES_ROOTTypeLib{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}1.1]
    4. @="Microsoft Internet Controls"
    5. [HKEY_CLASSES_ROOTTypeLib{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}1.1]
    6. [HKEY_CLASSES_ROOTTypeLib{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}1.1win32]
    7. @="C:\WINDOWS\system32\ieframe.dll

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

  • 相关阅读:
    HDU3461 Code Lock 并查集应用
    记录,待总结8
    HDU1325 Is It A Tree?
    函数指针总结
    记录,待总结6
    HDU1272 小希的迷宫 并查集
    记录,待总结10
    记录,待总结9
    C# 获取radiobutton的值
    解决idea控制台tomcat输出中文乱码
  • 原文地址:https://www.cnblogs.com/soundcode/p/10858373.html
Copyright © 2011-2022 走看看