2011-01-31 2 views
1

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

Это то, что выглядит мой сценарий;

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 +, и они совсем не большие.

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

ответ

1

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

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

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

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

+0

Я только что узнал, что я позволил запустить «procmon», вот что это было. Однако объявления «ничего» - хорошие привычки, я дам вам ответ здесь:] – cc0

+0

См. «Эрик Липперт» [Когда вам нужно установить объекты ни к чему?] (Http://blogs.msdn.com/b/ericlippert /archive/2004/04/28/122259.aspx) для интересного обсуждения практики 'Set var = Nothing'. Удивительный ответ: почти никогда. –

Смежные вопросы