答案 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)有一篇很好的文章解释了所有这些背后的原因,包括为什么警告的门槛可能太低(以及如何将其改为更实用的东西。)
顺便说一句,即使您确实有泄漏但找不到它,关闭powershell进程也会返回内存。
希望这有帮助。
答案 1 :(得分:1)
System.DirectoryServices
也使用非托管对象。
您将需要处理您的directoryentry和directorysearcher对象,我想也是代表您由powershell隐式创建的searchresultcollection对象。
答案 2 :(得分:0)
你应该小心处理SP对象,特别是SPWeb和SPSite。
最佳做法参考: http://blogs.msdn.com/b/rogerla/archive/2008/02/12/sharepoint-2007-and-wss-3-0-dispose-patterns-by-example.aspx http://msdn.microsoft.com/en-us/library/aa973248.aspx
用于检测Sharepoint泄漏的VS插件: https://spdisposecheck2012.codeplex.com/