Delphi TWebBrowser 内存泄漏

Wil*_*hua 3 delphi delphi-2009 twebbrowser

我的应用程序使用加载网页的 TWebBrowser。问题是,关闭包含 TWebBrowser 的表单后,使用的内存没有释放。如果我打开和关闭表单,内存只会不断增加。

看到一些关于调用 SetProcessWorkingSetSize() 或 CoFreeUnusedLibrariesEx() 来解决这个问题的帖子,但我不确定这些是否是正确的解决方案。

知道如何释放 TWebBrowser 使用的内存吗?

Jos*_*ley 5

QC#106829描述了 TWebBrowser 内存泄漏的一种可能原因。访问Document(以及通过TOleControl.GetIDispatchProp或实现的任何其他属性TOleControl.GetIUnknownProp)会导致泄漏,因为它调用 AddRef 而不调用 Release。作为一种解决方法,您可以手动调用 Release,或者您可以修补 VCL(请参阅此处),或者您可以避免有问题的属性(例如,通过使用browser.DefaultInterface.Document代替browser.Document)。