我是powershell的新手,但已经编写了一些在windows2003服务器上运行的脚本。它肯定比cmd脚本更强大(可能是因为我有编程背景)。但是,当我进一步深入研究时,我注意到了:
我还没有涉及过C#,但有人会认为用C#编写任务有时会更好吗?
与此同时,我在powershell中看过有关内存泄漏的帖子。我是否认为脚本创建的内存将与powershell的进程空间一致,因此当脚本终止因此powershell终止时,创建的内存会被清除?
答案 0 :(得分:5)
我的PowerShell.exe 2.0本身(不运行脚本)在XP上大约是30MB。这些天,每台机器的平均内存不应过多担心。关于内存泄漏,有些情况下,当对象没有得到妥善处理时,人们使用第三方库存在内存泄漏。要解决这些问题,您必须使用[gc]::Collect()
手动调用垃圾收集器,但这种情况很少见。其他时候我见过人们使用Get-Content
读取一个非常大的文件并在使用之前将其分配给变量。这也将占用大量内存。在这种情况下,您可以使用管道一次读取文件部分,以减少内存占用。
答案 1 :(得分:5)
1 - 是的,创建了一个新流程。运行cmd脚本,vb脚本或C#编译的可执行文件时也是如此。
2 - 加载powershell主机和运行时将占用一些非常重要的内存,这些内存因系统和版本而异。它通常是一个比cmd shell或专用C#exe更重的进程。对于那些MB,您将获得丰富的运行时和库支持,使Powershell如此强大。
一般评论: