我的应用程序使用加载网页的 TWebBrowser。问题是,关闭包含 TWebBrowser 的表单后,使用的内存没有释放。如果我打开和关闭表单,内存只会不断增加。
看到一些关于调用 SetProcessWorkingSetSize() 或 CoFreeUnusedLibrariesEx() 来解决这个问题的帖子,但我不确定这些是否是正确的解决方案。
知道如何释放 TWebBrowser 使用的内存吗?
最佳答案
QC#106829描述了 TWebBrowser 内存泄漏的一种可能原因。访问 Document
(以及通过 TOleControl.GetIDispatchProp
或 TOleControl.GetIUnknownProp
实现的任何其他属性)会导致泄漏,因为它调用 AddRef 而不调用 Release。作为解决方法,您可以手动调用 Release,或者您可以修补 VCL ( see here ),或者您可以避免有问题的属性(例如,使用 browser.DefaultInterface.Document
而不是 browser.Document
)。
关于Delphi TWebBrowser 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10224801/