2013-07-08 44 views
0

我有这个代码小块,我不明白为什么它采取洙内存。为什么这个代码小块被消耗97868 K内存

static void Main(string[] args) 
    { 
     using (SPSite mySite = new SPSite("http://consotvo.internal.com/upi")) 
     { 
      using (SPWeb web = mySite.OpenWeb()) 
      { 
       //foreach (SPFile file in web.Files[0]) 
       // Console.WriteLine(file.Name); 

       SPFile file = web.Files[0]; 

       using (SPLimitedWebPartManager manager = file.GetLimitedWebPartManager(PersonalizationScope.Shared)) 
       { 
        foreach (System.Web.UI.WebControls.WebParts.WebPart wb in manager.WebParts) 
        { 
         Console.WriteLine(wb.Title); 


         //wb.Dispose(); 
         //manager.Web.Dispose(); 
        } 

       } 
      } 
     } 
    } 

此代码消耗97868ķ代码已被执行后,甚至连想都没想我没有关闭控制台窗口呢。我的问题是,我想打开3000个网(不同的URL),并进行更改的WebPart 但太多的内存被消耗

更新

using (SPLimitedWebPartManager manager = file.GetLimitedWebPartManager(PersonalizationScope.Shared)) 

独此行是增加40000ķ

+2

你如何衡量这个数量? – Steve

+2

目前,无法评估加载和使用所有程序集/代码的开销,以及单个请求的实际内存影响。至少,你应该测量一下,比如做10或20的单个请求,以确定每个请求的实际内存使用量可能是多少。另外,你如何测量消耗的内存? –

+1

是什么让你觉得消耗的内存太多了?仅仅因为1个网页消耗x,并不意味着2个网页会消耗2个网页。另外,请记住'使用'语句(或者他们调用的'Dispose'方法)与内存消耗无关。 –

回答

2

它看起来像你打开该网站的连接,然后这将拉低源该页面和所有源代码都需要存储在某个地方,除非将它分块成文本文件或数据库,否则它将需要消耗尽可能多的服务器返回的内存。

+3

是什么让你觉得拉下页面的来源? –

相关问题