电源外壳。 C#测量powershell主机内存使用情况

时间:2009-04-30 21:25:44

标签: c# memory powershell

我正在使用powershell异步管道调用自动使用来自C#的powershell脚本,我注意到当我一遍又一遍地执行脚本时,使用相同的运行空间,<scriptname>.vhost.exe内存使用率会上升和上升并且,在一天的操作之后它会耗尽内存。

有没有办法衡量运行空间声称的内存量,或者甚至是衡量它的方式。我知道我可以准备一个特殊的脚本,它调用WMI,然后返回一个进程列表,我可以搜索正确的vhost,然后对特定的行进行子串,但我认为这只是增加了概率。

我想也许runpaceconfiguration类或$ host变量会提供summat up,但我看不到任何东西。

理想情况下,我希望调整分配给它的内存大小,一旦它达到这个大小,我就会处理它,并创建一个新的运行空间,但这很昂贵。他们是通过PowerShell处理来释放内存的。

2009年5月26日

我真正想知道的是,当长时间执行多个脚本会影响运行时内存时,如何使用内存。基本上我有一个由规则驱动的执行引擎。当规则触发时,有时会执行脚本。每个规则库(规则集)都有自己的PowerShell主机。问题是如果我执行多个脚本,那么效果内存将是当前的appdomain。将主机转储到另一个appdomain中会不会更好,或者是否在当前标准c#方式之外设置它的运行时间。问题是,他们缺乏优秀的文档。基本上我想通过重复使用来确保它们不会累积内存使用量。如果我将它发送到远程域,那么至少当它达到一定大小时,我可以将其转储,然后重新创建它。

你的想法是什么?

2 个答案:

答案 0 :(得分:1)

要检查的第一个区域之一是您在该运行空间中创建的任何对象都被取消引用(没有指向它们的变量),因此它们可以被垃圾收集。

PowerShell控制台和I blogged about that problem here中可能会发生类似的问题。

答案 1 :(得分:0)

我认为您需要发布一个代码片段,其中包含您使用powerscript对象执行此操作的具体方法。

另外,VSHost只是从IDE运行时的主机进程(换句话说调试)在IDE外部运行应用程序时是否有相同的情况?