我有一个应用程序使用TWebbrowser
定期导航到特定的URL并提取一些数据。该应用程序不断运行24x7并在页面中进行大量导航。TWebbrowser海量内存泄漏:目前尚无解决方案
问题是,TWebbrowser
有一个众所周知的内存泄漏问题,其中每当您导航到新页面时,用于应用程序的内存都会增加。一段时间后,我的应用程序可以轻松使用超过2GB的RAM。在导航数百次之后,会引发'Out of memory'
或'Out of system resources'
异常,解决此问题的唯一方法是重新启动应用程序。
奇怪的是FASTMM
从来没有显示这些泄漏。当我使用我的应用程序几分钟并关闭它时,没有任何报告。
我一直在寻找这个问题多年的解决方案(事实上自2007年我写了我的应用程序的第一个版本)。有一些解决方法,但事实上,他们都没有解决问题。对我来说,唯一的解决方法是定期关闭并打开应用程序。
我已经测试了SetProcessWorkingSetSize
的方法,但它只会缩短应用程序暂时使用的内存。几秒钟后,该应用程序再次使用大量内存。
我也试过EmbeddedWB
,但是因为它从TWebbrowser
下降,所以它受到同样问题的困扰。
顺便说一下,我不能使用像IdHTTP
这样的简单组件,因为我需要在访问的网站上执行一些JavaScript操作。
有谁知道是否真的有这个问题的解决方案?
你真的不应该使用非可视化工作的可视化组件。找到另一个解至于FastMM,它不是分配WebBrowser内部存储器的人,所以它不能跟踪它。 –
有一些导致解决方案,但它取决于您的要求。例如,(1)你可以每隔一小时关闭浏览器吗? (2)必须是MSIE吗?顺便说一句:“开始赏金”的确可以公平地回答这样的问题。 – stanleyxu2005
http://stackoverflow.com/q/10224801/25507 –