我设法创建一些简单的脚本来捕获新闻形式的网站,但问题在于内存泄漏。似乎脚本没有释放内存:( 我试图关闭,空(没有任何反而空无所事事) - 检查终点线。
Do While x<50000
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.3.0")
WScript.Sleep 60000
oXMLHTTP.Open "GET", "http://www.news.com/sport", False
WScript.Sleep 900
oXMLHTTP.Send
If oXMLHTTP.Status = 200 Then
Set html = CreateObject("HTMLfile")
html.write oXMLHTTP.responseText
...some code...
html=Empty
oXMLHTTP=Empty
oXMLHTTP.responseText=Empty
oXMLHTTP.close
oStream.close
oStream=Empty
Loop
答案 0 :(得分:2)
Set x = Nothing
才能发布对象x
答案 1 :(得分:1)
在下一个脚本存根中:
oXMLHTTP
变量被声明为 global 并定义一次以用于整个脚本; html
和oStream
个变量是DoSomething
程序的本地变量,并从中释放出来...... 但是,有些陈述对我来说还不清楚......
Option Explicit
Dim x, oXMLHTTP
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.3.0")
Do While x<50000
WScript.Sleep 60000
oXMLHTTP.Open "GET", "http://www.news.com/sport", False
WScript.Sleep 900
oXMLHTTP.Send
DoSomething
oXMLHTTP.close
Loop
Sub DoSomething
Dim html, oStream
If oXMLHTTP.Status = 200 Then
Set html = CreateObject("HTMLfile")
html.write oXMLHTTP.responseText
'...some code...
End If
'...another code...
End Sub
Local Variables in Sub Procedures
不保留Sub过程中局部变量的值 在调用程序之间。
在过程中显式声明的变量(使用Dim或 等效的)总是在程序的本地。变量是 在程序中使用但未明确声明的也是本地的,除非 他们被明确宣布在更高层之外 过程
如果未在过程中显式声明变量,则命名 如果您在脚本级别定义了任何内容,则可能会发生冲突 名称重复。如果您的程序涉及未申报 与另一个过程具有相同名称的变量,常量或 变量,假设您的程序指的是那个 脚本级名称。为避免此类冲突,请使用Option Explicit语句强制显式声明变量。
Scope and Lifetime of Variables
变量的范围由您声明它的位置决定。当你 在过程中声明一个变量,只在该过程中声明代码 可以访问或更改该变量的值。它有本地范围 并且是一个过程级变量。如果在a之外声明一个变量 程序,你可以识别你的所有程序 脚本。这是一个脚本级变量,它具有脚本级别 范围。
变量的生命周期取决于它存在多长时间。一生 脚本级变量的范围从声明的时间延伸到 脚本运行完毕的时间。在程序层面,a 只要您在过程中,变量就存在。当。。。的时候 过程退出,变量被破坏。局部变量是理想的 作为过程执行时的临时存储空间。你可以有 几个不同程序中同名的局部变量 因为每个人只能通过它的程序来识别 声明。