如何在SharePoint Powershell脚本中修复此内存泄漏?

时间:2011-08-18 11:05:24

标签: sharepoint powershell memory-leaks

3 个答案:

答案 0 :(得分:4)

此消息实际上并不表示泄漏 - 这里的关键是“潜在”。所有这些消息意味着你的线程同时打开很多。用于发出该消息的阈值实际上设置得非常低以供实际使用。真正重要的是它们在其生命周期结束时正确处理。如果您真的有泄漏,您会看到如下消息:

  

05/012/2011 12:58:47.31 w3wp.exe(0x105C)
  0x09A8 Windows SharePoint Services常规
  8l1n高 SPRequest对象未在之前处理   此线程结束。为避免浪费系统资源,请将其丢弃   您可以使用此对象或其父对象(例如SPSite或SPWeb)   完成使用它。现在将处理此对象。分配ID:   {5BFFCA4B-3B91-45BF-98CD-0BB508BE30EE}确定此对象的位置   已分配,创建一个注册表项   HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Shared Tools \ Web Server   扩展\ HeapSettings。然后创建一个名为的新DWORD   SPRequestStackTrace,此键下的值为1。

斯特凡·格罗斯纳(Stefan Grossner)有一篇很好的文章解释了所有这些背后的原因,包括为什么警告的门槛可能太低(以及如何将其改为更实用的东西。)

http://blogs.technet.com/b/stefan_gossner/archive/2008/05/07/troubleshooting-spsite-spweb-leaks-in-wss-v3-and-moss-2007.aspx

顺便说一句,即使您确实有泄漏但找不到它,关闭powershell进程也会返回内存。

希望这有帮助。

答案 1 :(得分:1)

System.DirectoryServices也使用非托管对象。

您将需要处理您的directoryentry和directorysearcher对象,我想也是代表您由powershell隐式创建的searchresultcollection对象。

答案 2 :(得分:0)