相关疑难解决方法(0)

Delphi TWebBrowser 内存泄漏

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

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

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

delphi delphi-2009 twebbrowser

3
推荐指数
1
解决办法
4623
查看次数

在 Delphi 10.3.3 中访问 TWebBrowser.Document 时如何克服内存泄漏

我正在使用 StackOverflow 中的此代码(如何从 TWebBrowser 获取 HTML 源代码)来获取网页的完整响应:

function TMain.GetWebBrowserHTML(const WebBrowser: TWebBrowser): String;
var
  LStream: TStringStream;
  Stream: IStream;
  LPersistStreamInit: IPersistStreamInit;
begin
  if not Assigned(WebBrowser.Document) then
    Exit;
  LStream := TStringStream.Create('');
  try
    LPersistStreamInit := WebBrowser.Document as
      IPersistStreamInit;
    Stream := TStreamAdapter.Create(LStream, soReference);
    LPersistStreamInit.Save(Stream, True);
    Result := LStream.DataString;
  finally
    LStream.Free();
  end;
end;
Run Code Online (Sandbox Code Playgroud)

在使用一些大型网页对例程进行数百次调用后,我的内存不足。

显然,组件的Document属性存在一个已知问题,但替换为WebBrowser.Documentwith的建议WebBrowser.DefaultInterface.Document无济于事。我真的不想尝试修复 VCL,Release如果我知道在哪里以及如何做的话,另一个调用的建议可能会奏效。泄漏可能完全是另一回事。此代码高于我的工资等级。

TIdHTTP由于必须编写一些脚本,我无法使用,无论如何我都需要视觉效果。

另请参阅:TWebbrowser 大量内存泄漏:目前尚无解决方案

delphi memory-leaks twebbrowser delphi-10.3-rio

3
推荐指数
1
解决办法
179
查看次数