Я автоматизирую использование сценариев powershell из C #, используя асинхронный конвейер powershell, и замечаю, что когда я выполняю сценарий снова и снова, используя одно и то же пространство выполнения, использование памяти <scriptname>.vhost.exe
увеличивается и увеличивается и не хватило бы памяти после нескольких дней операций.
Есть ли способ измерить, сколько памяти было востребовано пространством выполнения, или даже так, как вы это измерили бы. Я знаю, что мог бы подготовить специальный скрипт, который вызывался бы в WMI, и который возвращал бы список процессов, я мог бы искать правильный vhost, а затем подстроковать конкретную строку, но я думаю, что это только добавление к пробе.
Я думал, что, возможно, класс runspaceconfiguration или переменная $ host предложат суммирование, но я ничего не вижу.
В идеале я хотел бы измерить выделенную ему память, и как только он достигнет такого размера, я бы распорядился им и создал новое пространство выполнения, но это дорого. Они готовы освободить память, скажем, утилизировать PowerShell.
26.05.2009
Что я действительно хочу знать, так это то, как используется память, когда выполнение нескольких сценариев в течение длительных периодов влияет на память времени выполнения. По сути, у меня есть механизм исполнения, который управляется правилами. Когда правило срабатывает, иногда выполняется скрипт. Каждый rulebase (набор правил) будет иметь свой собственный хост PowerShell. Вопрос в том, если я выполню несколько сценариев, как это отразится на памяти текущего домена приложения. Будет ли лучше сбросить хост в другом домене приложения или он настроит время выполнения вне текущего стандартного способа c #. Проблема в том, что у них такой недостаток хороших документов. По сути, я хочу быть уверенным, что они не накапливают использование памяти при повторном использовании. Если я запускаю его в удаленный домен, то, по крайней мере, когда он достигнет определенного размера, я могу сбросить его и создать заново.
Что ты думаешь?