1
17
这已被编辑,包括一个安全的,非特定的答案。 一般来说 :dispose everything,因为dispose是.NET framework释放外部资源(如文件句柄、TCP端口、数据库连接等)的方法。除非调用Dispose(),否则不能保证释放资源。所以要当心。这是一般的、非SharePoint的答案。 特别是在处理SharePoint时 关闭PowerShell.exe进程时,将释放内存。如果您需要处理对象以降低内存压力(在生产环境中很重要,或者在所有站点/站点上循环),请确保处理。如果没有,你就不必担心处理。 我们之所以如此热衷于处理,首先是因为大多数SharePoint代码都在长时间运行的进程中运行(在ASP.NET worker进程或OWSTimer.exe中),而未能处理可能会导致难以排除故障、突然发生灾难(即web服务器崩溃)。在PowerShell中工作时,这些灾难性的性能问题/OutOfMemoryException在大多数情况下都不会影响我。我运行临时脚本,由于无法处理对象,我浪费了约3-50MB的RAM,我关闭了PowerShell窗口,内存被释放。 最 我已经构建了使用SharePoint的脚本,大多数时候我都不需要处理。 Here is a script wherein I dispose SPSite and SPWeb objects Here is a script in which I don't bother to dispose an SPSite object |
2
4
理想情况下,您应该在可能的情况下调用Dispose。甚至在PowerShell里面。 SharePoint库包含许多代码,这些代码只是COM对象的包装器——为了让生活更有趣,许多COM对象都有自己的池和缓存。对Dispose的.NET调用实际上只是指示COM对象它们可以释放自己的对象(其生命周期可能超出调用过程)。 http://blogs.msdn.com/sharepoint/archive/2009/02/11/sharepoint-and-powershell-knowledge.aspx |
3
3
|
4
2
如果shell正在访问的外部资源的生存期长于PowerShell脚本的生存期,则应调用Dispose。 但是,如果它是由脚本分配的资源,则无需清理。当脚本退出时,将清除为脚本分配的所有内存。 |
5
2
虽然关闭该进程将清理一切,但要小心。如果要执行涉及服务器场中所有站点的循环,丢失的dispose会很快消耗大量内存,这会使服务器缓慢爬行。由于脚本编写对批处理操作最有帮助,因此请始终记住这一点。 |
sorosh_sabz · 为什么插件llcsharp-v2报告失败 1 年前 |
kristaps · 将嵌套的JSON输出导出到CSV文件 1 年前 |
Flamingo · 如何更改PowerShell exe的默认路径 1 年前 |
arsaces · 将文本添加到特定文件的末尾 2 年前 |
Astora · Powershell-在错误位置写入主机打印 2 年前 |
siennac · 使用powershell更改html中的文本颜色 2 年前 |