- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用IHTMLDocument(IHTMLDocument2)后有没有办法释放内存?
目前我正在使用EmptyWorkingSet功能,但我觉得这不是一个好方法
EmptyWorkingSet(GetCurrentProcess);
即使释放 TWebBrowser 也无济于事;问题似乎出在 IHTMLDocument COM 类中,该类未从内存中释放。有没有明确的释放方式;类似 Marshal.ReleaseComObject但可用于 Delphi 吗?
与运行 JavaScript 相比,它是可重现的,内存损失更少,但仍然如此。如果您在表单顶部放置两个按钮并尝试以下代码...
uses MSHTML, SHDocVw;
type
TForm1 = class(TForm)
private
WebBrowser: TWebBrowser;
HTMLDocument: IHTMLDocument2;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser := TWebBrowser.Create(nil);
TWinControl(WebBrowser).Parent := Self;
WebBrowser.SetBounds(8, 39, ClientWidth-16, ClientHeight-47);
WebBrowser.Navigate('http://maps.google.com/');
HTMLDocument := WebBrowser.Document as IHTMLDocument2;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
WebBrowser.Free;
HTMLDocument := nil;
end;
每次 WebBrowser 释放后,您都会看到内存丢失。当我运行 JavaSrcipt 时,它甚至超过 300 kB,约为 1 MB,如果我运行这么多次,这可能会导致内存泄漏。
非常感谢
最佳答案
当您释放对 COM 类的所有引用时,通常应该释放它们。通常,这可以通过将 nil 分配给所有持有其接口(interface)引用的变量来完成。
要立即释放 COM DLL 使用的内存,您可以使用 CoFreeUnusedLibrariesEx .
关于delphi - 如何释放IHTMLDocument使用的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6051437/
基于 IHTMLDocument2 的 MSHTML 文档,我正在尝试编写简单的 HTML 解析器。不幸的是,尝试设置编辑模式失败,换句话说,resultState 永远不会获得“完整”值,因此应用程
我想在我的 Win32 应用程序中显示一个简单的网页。 我看过这个问题 IWebBrowser2: how to force links to open in new window? 我想完全按照问题
我在 C++ 应用程序中使用 WebBrowser 控件并想检索 documentMode property加载的文档。 IHTMLDocument2 接口(interface)具有特定属性的方法(g
使用以下代码,我可以打开 Internet Explorer 窗口并导航到该网站。我想更进一步,能够通过代码点击其中一个链接(例如“拳击/UFC”)。 Sub Run() Set IE = Cre
我需要向现有的 HTML 文档添加“注释”- 最好是我可以通过名称读写的字符串属性值的形式。 显然(对我而言), header 中的元元素似乎是常见的方式 - 即添加/修改元素,如 ...
接口(interface)名称末尾的数字是什么意思?我看到 IHTMLDocument3-7 没有成员 ( see example for #5 ),而 8 有与手势相关的成员。数字是从 Window
我在当前项目中使用网络浏览器,目前我在设计模式下使用它以使其可编辑等。我当前使用的代码是: WebBrowser.Document.DomDocument as IHTMLDocument2 IHTM
我有一个 C++ 库 (Win32),它填充了我想从 .NET(一个 IE 工具栏)使用的网页中的一些字段,但我不知道如何通过 COM 公开该方法。我已经知道我应该像这样将它添加到 .idl 文件中的
我正在尝试使用 MSXML2 和 IHTMLDocument 处理 HTML 网页的 iframe 部分。 我想使用 MSXML2 并将其保存以更好地“捕获”数据,认为它比仅使用 InternetEx
我是一名优秀的程序员,十分优秀!