2012-04-26 43 views
0

下面的代碼是否泄漏內存?如果是的話,有關優化它的任何建議?以下MOSS 2007代碼可能會導致內存泄漏?

SPWeb web = (SPWeb)properties.Feature.Parent; // comes from the event receiver 
//... lots of other code 

// the below is the focal point. 
foreach (SPWeb childWeb in web.Webs) 
{ 
    try 
    { 
     // lots of heavy processing with the childWebs 
    } 
    finally 
    { 
     if (childWeb != null) 
     { 
      childWeb.Dispose(); 
     } 
    } 
} 

回答

3

您發佈的代碼應該沒問題。但是,根據try-statement中對childWeb所做的操作,可能會導致內存泄漏。你能發佈整個代碼嗎?你懷疑有內存泄漏嗎?

+0

感謝您的支票。我只用childWeb做很輕的處理,例如獲取列表。我當時很妄想,在網頁上做foreach可能會導致泄漏,因爲在一些失敗的代碼之後,整個瀏覽器似乎在再次恢復生命之前就會停留在檢測代理設置上。我認爲這可能是由於內存泄漏導致的IISreset。 – BeraCim 2012-04-26 07:08:19

+1

好的,沒問題。您始終可以在任務管理器中監視w3wp進程,以查看它是否實際執行iisreset,在這種情況下,該進程的內存使用量應該下降。 – 2012-04-26 07:11:42

+0

哦,順便說一句,如果我的回答是有幫助的,請標記爲答案.. – 2012-04-26 07:31:22

1

根據Disposing Objects,您的代碼與SPWeb.Webs的Good Coding Practice相符。

正如該頁面所述,我建議下載並使用SPDisposeCheck作爲驗證正確的代碼和識別潛在的內存泄漏。