4

コード内のメモリリークを見つける方法を知りたいです。他の人が書いたコードに取り組んでいますが、メモリ リークがあると言われました。コードを調べて、メモリリークがあるかどうかを確認しています。

次のコードにメモリ リークがありますか。ここで SPWEB オブジェクトを閉じる必要がありますか。

     private bool isSubSite()
    {

        SPWeb currWeb = SPContext.Current.Web;
        SPWeb rootWeb = currWeb.Site.RootWeb;

        if (currWeb.ID != rootWeb.ID)
            return true;
        return false;
    }
4

3 に答える 3

5

いいえ、そのコードにはメモリ リークはありません。

SPWebいいえ、それらのオブジェクトを破棄するべきではありません。それらを破棄すると、それらのSPWebオブジェクトが後続のリクエストで使用されたとき、または現在のリクエストの後続の場所で使用されたときに失敗します。SPWebオブジェクトを作成し、現在のコンテキストに割り当てたフレームワーク コードは、オブジェクトを破棄する責任があります。

于 2014-12-16T19:27:21.977 に答える
-2

コードを次のように単純化します。

private bool isSubSite()
    { return SPContext.Current.Web.ID != currWeb.Site.RootWeb.ID;}

コードを調べて、メモリ リークの原因であるかどうかを判断する方法はありません (ただし、上記のコードは一時的な参照のみを使用しています)。

于 2014-12-16T19:31:02.073 に答える