Vbscript VBS进程内存消耗随时间增长

Vbscript VBS进程内存消耗随时间增长,vbscript,wsh,Vbscript,Wsh,我有一个用Windows脚本主机运行的VBScript。脚本从文本文件中读取一些内容,然后在每次将文件添加到特定文件夹时启动桌面快捷方式。它从1.4Mb内存开始,每次我将文件添加到该文件夹时,它都会增长。有办法解决这个问题吗?如果没有,我想我可以有一个脚本,定期杀死第一个脚本并重新启动它?以下是脚本: '- Read some stuff from a file Set f = CreateObject("Scripting.FileSystemObject").OpenTextFile("D:

我有一个用Windows脚本主机运行的VBScript。脚本从文本文件中读取一些内容,然后在每次将文件添加到特定文件夹时启动桌面快捷方式。它从1.4Mb内存开始,每次我将文件添加到该文件夹时,它都会增长。有办法解决这个问题吗?如果没有,我想我可以有一个脚本,定期杀死第一个脚本并重新启动它?以下是脚本:

'- Read some stuff from a file
Set f = CreateObject("Scripting.FileSystemObject").OpenTextFile("D:\Post 
Processing Files\Common Files\New Data Folder Watcher\DATA_STORE.txt", 1)
dataStore = replace(f.ReadLine,"Title:","")
f.SkipLine
shortCut = replace(f.ReadLine,"Title:","")
f.Close

strComputer = "."

Set objWMIService = GetObject("winmgmts:" & "
{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colMonitoredEvents = objWMIService.ExecNotificationQuery("SELECT * FROM 
__InstanceCreationEvent WITHIN 5 WHERE "  & "Targetinstance ISA 
'CIM_DirectoryContainsFile' and " & "TargetInstance.GroupComponent= " & 
"'Win32_Directory.Name=" &Chr(34)&  dataStore  &Chr(34)& "'")

Set objShell = CreateObject("Wscript.Shell")

'- Watch
Do

    Set objLatestEvent = colMonitoredEvents.NextEvent
    objLatestEvent.TargetInstance.PartComponent

    objShell.Run shortCut

    '- Delay
    WScript.Sleep 120000

Loop
编辑:添加集合对象=无。这一进程仍在增长(不过稍微少了一点)。还有什么能让它成长? 新代码:

'- Read some stuff from a file
Set f = CreateObject("Scripting.FileSystemObject").OpenTextFile("D:\Post 
Processing Files\Common Files\New Data Folder Watcher\DATA_STORE.txt", 1)
dataStore = replace(f.ReadLine,"Title:","")
f.SkipLine
shortCut = replace(f.ReadLine,"Title:","")

f.Close
Set f = Nothing

strComputer = "."


' LOOP THROUGH EACH NEWLY ADDED FILE
Do

    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colMonitoredEvents = objWMIService.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE "  & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " & "TargetInstance.GroupComponent= " & "'Win32_Directory.Name=" &Chr(34)&  dataStore  &Chr(34)& "'")
    Set objLatestEvent = colMonitoredEvents.NextEvent
    Set objShell = CreateObject("Wscript.Shell")

    objLatestEvent.TargetInstance.PartComponent

    objShell.Run shortCut 

    '- Delay
    WScript.Sleep 120000

    '- Clear Memory
    Set  objLatestEvent = Nothing
    Set  objShell = Nothing
    Set  colMonitoredEvents = Nothing
    Set  objWMIService = Nothing


Loop   

很可能是因为您没有清除所有的对象变量。当您将对象设置为某个对象时,您必须在完成后将其设置为“无”,否则它将保留在系统内存中。尝试在您的
Do..Loop
之后添加这些内容:
Set f=Nothing
Set objWMIService=Nothing
Set colMonitoredEvents=Nothing
Set objShell=Nothing
Set objlatestvent=Nothing
。在再次运行脚本以清除系统内存之前,您可能需要重新启动计算机。DO循环应该永远运行。。。在循环结束时,我将所有内容都设置为Nothing,但每次添加文件时,我的进程仍然会增长。从概念上讲这是怎么可能的?我在上面添加了新代码…您正在循环中重复设置对象。在循环之前进行初始设置,然后在循环之后将其设置为“无”。