VBScript для запуска приложений COM+ в очереди — утечка памяти

У меня есть простой VBScript, который перебирает все приложения COM+ и запускает те, которые стоят в очереди. Это проходит каждые полчаса. У моего сервера 2,5 ГБ памяти. Затем, примерно через 3 полных дня, я получаю сообщение об ошибке «Недостаточно памяти» от Windows Script Host. Тем не менее, кажется, что с памятью сервера все в порядке. Свободно около 1гб.

Вот как выглядит мой сценарий;

dim cat 
Dim apps
Dim app

set cat = CreateObject ("COMAdmin.COMAdminCatalog") 

set apps = cat.getcollection("Applications")
apps.populate

for each app in apps
  if app.Value("QueuingEnabled") then
    cat.StartApplication (app.name) 
  end if
next

В прошлый раз, когда я получил эту ошибку, она сообщила о строке № 7; set apps = cat.getcollection("Applications") как место, где закончилась память. Есть ли у кого-нибудь предложения о том, как решить эту проблему? У меня очень мало опыта работы с COM+, поэтому мне трудно понять, что здесь потребляет память. На сервере работает всего около 8 приложений COM+, и они совсем не большие.

Любая помощь здесь будет принята с благодарностью.


person cc0    schedule 31.01.2011    source источник


Ответы (1)


Я думаю, вам нужно:

Set app = Nothing
Set apps = Nothing
Set cat = Nothing

в конце вашего сценария.

См. http://support.microsoft.com/kb/304713 пример использования объект COMAdmin.COMAdminCatalog.

person Cheeso    schedule 03.02.2011
comment
Я только что узнал, что запустил procmon, вот что это было. Объявления «ничего» — это хорошая привычка, я дам вам ответ здесь:] - person cc0; 03.02.2011
comment
См. Эрика Липперта, когда вам необходимо ничего не устанавливать для объектов ? за интересное обсуждение практики Set var = Nothing. Удивительный ответ: почти никогда. - person Randy supports Monica; 07.02.2011