【发布时间】:2012-04-19 09:00:02
【问题描述】:
我的应用程序使用加载网页的 TWebBrowser。问题是,在关闭包含 TWebBrowser 的表单后,使用的内存没有被释放。如果我打开和关闭表单,内存只会不断增加。
看到一些关于调用 SetProcessWorkingSetSize() 或 CoFreeUnusedLibrariesEx() 来解决这个问题的帖子,但我不确定这些是否是正确的解决方案。
知道如何释放 TWebBrowser 使用的内存吗?
【问题讨论】:
-
我预计您可能会误解您用来收集这些统计信息的任何内容。堆分配器非常复杂,它们在需要释放内存之前一直保留内存是非常常见的。如果系统有足够的可用内存,既然可以免费使用它,为什么还要花时间将它返回给操作系统。
-
你如何关闭(和打开)表单,它是否被任何东西释放?来源请。
-
在不加载网页的情况下打开和关闭表单是否还有内存问题?
-
您可以找到
here的此类泄漏应用程序示例。即使以TWebBrowser作为组件的表单被释放,线程仍然在运行,并且每个新实例都会创建新的线程(因此内存消耗会增加)。我还没有找到解决方案,我尝试了很多方法,包括CoFreeUnusedLibrariesEx,导航到about:blank,没有任何帮助。这是一个严重的问题,因为创建多个表单实例会消耗大量系统资源。我的建议是隐藏表单,而不是发布,因为它似乎在这里没有效果。 -
多年后,至今没有解决方案:/
标签: delphi delphi-2009 twebbrowser