我有一个 VBA 宏脚本可以抓取一些数据。它是用 MSIE 刮的。我相信 MSIE 是内存泄漏的核心问题。
我正在初始化变量
Set IE = CreateObject("InternetExplorer.Application")
我做了一个小测试,看看内存是如何被使用的。
我做了一个循环,它只生成 1 个 IE 实例并 ping 同一个网站。记忆似乎不是韭菜。
然后我做了一个循环,它总是 ping 一个不同的站点,内存使用量随着每个请求开始增加。
我还做了一个测试(我在下面发布),在每次迭代中创建新对象并在最后删除它。删除部分似乎不起作用。
似乎 IE 的实例正在缓存请求,因此对象变得越来越大。这只是一个假设。
这是我用来测试泄漏的示例代码。
Do While True
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate "https://www.google.hr/#hl=hr&gs_nf=1&cp=3&gs_id=8&xhr=t&q=" & Counter
IE.Visible = True
Do While IE.readyState <> 4 Or IE.Busy = True
Application.Wait Now() + TimeValue("00:00:01")
DoEvents
Loop
Application.Wait Now() + TimeValue("00:00:01")
Counter = Counter + 1
Range("A" & Counter).Value = "https://www.google.hr/#hl=hr&gs_nf=1&cp=3&gs_id=8&xhr=t&q=" & Counter
IE.Quit
Set IE = Nothing
Loop
任何输入都会很棒!