作者:激越工作室 | 来源:互联网 | 2023-05-17 12:28
蒋老师,您好!我看了很多您回复或编写的关于WebBrowser编程的帖子,都没有找到解决WebBrowser释放内存的办法。微软公布了解决WebBrowser内存泄漏的补丁,但只是在2003和XPS
蒋老师,您好!我看了很多您回复或编写的关于WebBrowser编程的帖子,都没有找到解决WebBrowser释放内存的办法。微软公布了解决WebBrowser内存泄漏的补丁,但只是在2003和XP SP2上使用。我目前的系统是Win2000,使用WebBrowser访问网页时,出现内存不断增大无法释放的问题。请问如何解决?谢谢!
19 个解决方案
微软也没有办法。你可以把浏览器隔离到另一个进程里面去,进程结束内存就释放了
我试过动态生成WebBrowser也是不行,已经释放并delete了,可内存还是释放不了,直到关闭程序才行。现在的解决办法是编了两个程序,将含有WebBrowser的部分放在一个程序中,用另外一个程序在需要时去调用它,并判断如果内存增到一定数值,就自动关闭,等待下次再调用运行。实在非常痛苦和无奈!非常感谢您的回复。
我也是遇到这个问题啊,内存就是释放不了。
后来我是把这个放到了另外一个程序中去,需要的时候去调用
WebBrowser控件要申请的内存实在太多,很难说是哪一句代码引起的内存泄漏。如果在正常释放WebBrowser控件接口后仍然回收不了内存,那就是真的内存泄漏,恐怕谁也没有办法。
就这个问题,我还有点疑问:目前基于IE内核的浏览器,尤其多页类的,象:遨游、世界之窗等。他们是否没用到WebBrowser?因为我发现这些产品并没有这个问题。如果没用到WebBrowser,那他们怎样去调用IE内核呢?可能是我水平不够,好像只能通过WebBrowser才能获得最初的接口,然后再去调用其他接口对页面信息进行处理。
所有基于IE内核的浏览器都是用WebBrowser做的,这点可以放心,目前还没见到有谁能直接使用trident引擎来开发一个浏览器的
好的,非常感谢各位的回复!这个帖子先留一段时间,希望能有更多对IE编程有心得的高手谈谈这方面的体会。我尤其想知道象遨游、世界之窗这类浏览器是怎么解决这个问题,讲一下大致的思路也行。谢谢各位!
1、如果你使用的是CHtmlView类,那么CHtmlView有一个指针引用上的泄露。
请在CHtmlView类中查找调用GetHtmlDocument()方法的地方。
2、程序在空闲时,调用CoFreeUnusedLibraries及时清理未使用的dll
在没有用任何类的情况下,就会出现泄漏的问题。大家可以做个简单的试验:在程序中放置一个WebBrowser,然后不断打开同一个网址,并观察内存和虚拟内存的占用情况。一段时间后,会发现内存和虚拟内存会不断增大。直到将程序关闭,所占用的内存和虚拟内存才会完全释放。网上有些资料讲述如何释放WebBrowser占用的内存,但实际虚拟内存并没有减少。其实是没有真正的释放,当程序运行一段时间后系统会越来越慢,直到系统警告虚拟内存太低。目前我所知道的办法就是关闭该程序!
关注这个问题 好像现在浏览器内存控制opera做得最好
我正遇到这样的问题,查了很多都没有解决的办法;
如果调用另一个程序的话效果又不好,郁闷。。。
希望有相关人士给出答案,感激涕零。。。
http://www.cnblogs.com/manors/archive/2009/05/25/1488909.html