小编Man*_*ero的帖子

使用C#中的Powershell远程调用进行内存泄漏

我有一个Windows服务,它正在进行大量的交换远程调用以获取一些服务器信息.我注意到,随着时间的推移,服务使用的内存开始增长,直到抛出内存异常.我已经搜索过,看起来有一个已知的内存泄漏System.Management.Automation,它不会Runspace在调用close和/或dispose方法时释放所创建的所有内存.我回顾了建议使用后CreateOutOfProcessRunspaceRunspaceFactory,但不知道如何使用它.

以下是如何重现该问题:( System.Management.Automation参考dll)

for (int i = 0; i < 1000; i++)
{
    var runspace = RunspaceFactory.CreateRunspace();
    runspace.Open();
    runspace.Close();
    runspace.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

如果运行此代码,您将看到内存如何递增.由于要求,尽可能保持连接打开不是一个好的解决方案.

你知道我怎么能解决这个问题,即使使用CreateOutOfProcessRunspace的方法RunspaceFactory或如何处置属性格式记忆?

提前致谢

编辑

我正在使用V3并更改运行空间创建以使用CreateRunspacePool方法,看起来泄漏已经消失.非常感谢你的帮助!

c# memory powershell memory-leaks runspace

10
推荐指数
1
解决办法
3490
查看次数

标签 统计

c# ×1

memory ×1

memory-leaks ×1

powershell ×1

runspace ×1