首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi TWebBrowser内存泄漏

Delphi TWebBrowser内存泄漏
EN

Stack Overflow用户
提问于 2012-04-19 17:00:03
回答 6查看 4.7K关注 0票数 4

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

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

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

EN

回答 6

Stack Overflow用户

发布于 2014-07-31 04:22:53

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

票数 5
EN

Stack Overflow用户

发布于 2012-04-20 01:04:57

使用TWebBrowser可以在幕后完成大量工作,与完整的Internet Explorer实例所做的工作大同小异。它对你来说是隐藏的,但它仍然在那里,我们很可能无法从内存中强行删除它。检查页面加载之前和之间的内存使用情况,并测试调用Navigate('about:blank');时发生的情况。还要检查析构函数是否被正确调用,并考虑从OnClose或OnCloseQuery调用Navigate('about:blank');。我发现这确实对记忆状况有一点帮助。

票数 1
EN

Stack Overflow用户

发布于 2018-06-17 00:25:27

最好的解决方案是停止使用TWebbrowser。

CEF4Delphi是一个免费的库,使用的是Chrome而不是is。始终保持最新状态,并且非常高效:

https://github.com/salvadordf/CEF4Delphi

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10224801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档