SharePoint SSOM内存泄漏
我注意到我的SharePoint控制台应用程序内存泄漏。 应用程序创建网站集和子网站,如下所示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
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
本身被释放。