我有一个TWebbrowser
用于定期导航到特定 URL 并提取一些数据的应用程序。该应用程序保持 24x7 全天候运行,并在页面中进行大量导航。
问题是TWebbrowser
有一个众所周知的内存泄漏问题,每次导航到新页面时,应用程序使用的内存都会增加。一段时间后,我的应用程序可以轻松使用超过 2GB 的 RAM。在导航数百次之后,'Out of memory'
抛出'Out of system resources'
异常,解决它的唯一方法是重新启动应用程序。
奇怪的是FASTMM
从不显示这些泄漏。当我使用我的应用程序几分钟并关闭它时,没有任何报告。
多年来,我一直在寻找解决这个问题的方法(实际上是从 2007 年我编写应用程序的第一个版本开始)。有一些解决方法,但实际上,它们都不能解决问题。对我来说,唯一的解决方法是定期关闭和打开应用程序。
我已经测试了这种SetProcessWorkingSetSize
方法,但它只是暂时缩小了应用程序使用的内存。几秒钟后,该应用程序再次使用大量内存。
我也尝试过EmbeddedWB
,但由于它来自TWebbrowser
,它受到同样问题的困扰。
顺便说一句,我不能使用像这样的简单组件IdHTTP
,因为我需要在访问的网站中进行一些 JavaScript 操作。
有谁知道这个问题是否真的有解决方案?