我有擦伤一些数据的VBA宏脚本。使用MSIE它 它的擦伤。我相信MSIE是核心问题的内存泄漏。VBA宏内存泄漏(如何清除变量=
我“M初始化变量等
Set IE = CreateObject("InternetExplorer.Application")
我了一个小测试,看看是如何被使用的存储器。
我制成的环,这使得只有1 IE的实例和坪同一个网站。 内存似乎不韭菜。
然后,我做了一个循环,总是ping不同的网站和内存使用量开始增加与每个请求。
我还做了一个测试(我在下面发布),它在每次迭代中创建NEW对象并在最后删除它。删除部分似乎不起作用。
看来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
任何投入将是巨大的!
我测试上面的代码中,IE实例是越来越正确销毁? – 2012-07-07 13:58:05
当你将一个对象设置为空或者它实际上被破坏时可能会有延迟... – 2012-07-07 18:39:18
IE和其他Web浏览器总是将先前的页面保留在内存中,这样当你使用后退按钮时,页面立即显示出来。这是设计。 – Tmdean 2012-07-07 22:18:05