Я довольно новичок в программировании PowerShell.Я создаю удаленные сеансы для выполнения некоторых команд программно.Однако он потребляет так много памяти (порядка ~ 150 до 200 МБ).И больше сеансов, больше памяти.
Не могли бы вы помочь мне разобраться в проблеме?
- В чем виновник?
- Как я могу это исправить?
Наблюдения: 1. После выполнения команды CreateRunSpace она занимает около 3 МБ.
Кто-то сталкивался с той же проблемой при создании пространств выполнения:
http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/69ccce9d-4696-4886-a5d0-5d2d2e1e4e6d
"Возможная утечка дескриптора пространства выполнения PowerShell"
Все еще исследует, чтобы найтиответ хотя ...
Удаление pssession сделало пространство для освобождения дескрипторов и устранило утечку памяти.Теперь он переключается с ~ 30 до 40 МБ.
Спасибо!
(FYI - ссылка на System.Management.Automation.dll)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management.Automation.Runspaces;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int success = 0;
int fails = 0;
for (int i = 0; i < 50; i++)
{
Runspace rs = RunspaceFactory.CreateRunspace();
//After this the memory will be incremented by ~3Mb in taskmanager
rs.Open();
using (Pipeline pl = rs.CreatePipeline())
{
Command cmd = new Command("new-pssession");
pl.Commands.Add(cmd);
var retval = pl.Invoke();
if (retval.Count > 0)
{
success++;
}
else
{
fails++;
}
pl.Stop();
}
rs.Close();
rs = null;
}
GC.Collect();
}
}
}