我的应用程序使用加载网页的 TWebBrowser。问题是,关闭包含TWebBrowser的表单后,所使用的内存没有被释放。如果我打开并关闭表单,内存就会不断增加。
看到一些关于调用 SetProcessWorkingSetSize() 或 CoFreeUnusedLibrariesEx() 来解决此问题的帖子,但我不确定这些是否是正确的解决方案。
知道如何释放 TWebBrowser 使用的内存吗?
QC#106829 http://qc.embarcadero.com/wc/qcmain.aspx?d=106829描述了 TWebBrowser 内存泄漏的一种可能原因。访问Document
(以及通过实现的任何其他属性TOleControl.GetIDispatchProp
or TOleControl.GetIUnknownProp
) 会导致泄漏,因为它调用 AddRef 而没有调用 Release。作为解决方法,您可以手动调用 Release,也可以修补 VCL (see here http://marc.durdin.net/2012/07/understanding-and-correcting-interface-reference-leaks-in-delphis-vcl-olectrls-pas/),或者您可以避免有问题的属性(例如,通过使用browser.DefaultInterface.Document
代替browser.Document
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)