Я новичок в программировании на PowerShell. Я создаю удаленные сеансы для программного выполнения некоторых команд. Однако он потребляет очень много памяти (порядка ~ 150–200 МБ). Чем больше сессий, тем больше памяти.
Не могли бы вы помочь мне разобраться в проблеме?
Наблюдения: 1. После выполнения команды CreateRunSpace он занимает около 3 МБ.
Кто-то столкнулся с той же проблемой при создании пространств выполнения:
" Возможная утечка дескрипторов пространства выполнения 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();
}
}
}