SharePoint SSOM内存泄漏

SharePoint SSOM内存泄漏,sharepoint,memory-leaks,Sharepoint,Memory Leaks,我注意到我的SharePoint控制台应用程序内存泄漏。 应用程序创建网站集和子网站,如下所示 using(SPSite site = new SPSite(rootUrl)) { using(SPSite newSite = site.WebApplication.Sites.Add(...)) { foreach(var s in subwebs) // subwebs is just a collecti

我注意到我的SharePoint控制台应用程序内存泄漏。 应用程序创建网站集和子网站,如下所示

 using(SPSite site = new SPSite(rootUrl))
 {
            using(SPSite newSite = site.WebApplication.Sites.Add(...))
            {
                 foreach(var s in subwebs) // subwebs is just a collection of models with title, url etc
                 {
                     Logger.Log(...);                         
                     using (SPWeb web = newSite.AllWebs.Add(s.Url)) 
                     {
                        Logger.Log(...);
                     } // SPWeb disposed
                 } // SPSite disposed
            } // SPSite disposed
        }
当此应用运行数小时时,内存消耗会显著增加。 是的,它为几十个网站集创建了数千个子网站。 4-5小时后内存消耗超过1.5 GiB。 SPSite和spweb被正确地处理(或者看起来像是这样),并且大部分内存被Microsoft.SharePoint.Upgrade.SPManager占用(根据内存探查器数据)


什么原因会导致这种情况?

您是否尝试过通过
.Dispose()
成员方法使用
块在
结束之前显式处理所有SPSite和SPWeb对象?如果这不能解决问题,我们可能需要查看您的
Logger.Log()
方法的详细信息
Im只记录创建的
SPSite
SPWeb
并传递其url:
Logger.Log('SPWeb created:',web.url)
现在将尝试显式
处理
,谢谢。似乎
SPSite
对象具有内部字典,其中存储通过
新建SPWeb()创建的所有SPWeb对象
SPWebCollection。添加
方法,直到
SPSite
本身被释放。您是否尝试过通过
.Dispose()
成员方法使用
块在其
结束之前显式地释放所有SPSite和SPWeb对象?如果这不能解决问题,我们可能需要查看您的
Logger.Log()
方法的详细信息
Im只记录创建的
SPSite
SPWeb
并传递其url:
Logger.Log('SPWeb created:',web.url)
现在将尝试显式
Dispose
,谢谢。似乎
SPSite
对象具有内部字典,存储通过
new SPWeb()
SPWebCollection创建的所有SPWeb对象。添加
方法,直到
SPSite
本身被释放。