2013-07-08 82 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

是什麼讓你覺得拉下頁面的來源? –

相關問題