2012-04-26 9 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で非常に軽い処理しか行いません。リストを取得する。 Web上でforeachを実行すると、潜在的にリークが発生する恐れがありました。コードが失敗した後、ブラウザ全体が何年も前からProxy設定を検出してからもう一度生き返ります。そして、私は、メモリリークに起因するIISresetが原因であると考えました。 – BeraCim

+1

いいえ、問題ありません。タスクマネージャでw3wpプロセスを常に監視して、iisresetが実際に実行されているかどうかを確認することができます。この場合、プロセスのメモリ使用量が低下します。 –

+0

ああ、btw、私の答えが役に立ったら、答えとしてマークしてください.. –

1

Disposing Objectsによれば、コードはSPWeb.WebsのGood Coding Practiceと一致します。

このページで説明したように、正しいコードの検証と潜在的なメモリリークの識別の両方として、SPDisposeCheckをダウンロードして使用することをおすすめします。

関連する問題