tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^4: クラスの破棄について
投稿日: 2009/05/13(Wed) 10:26
投稿者ダンボ
Hongliangさん、YuOさん、どうも有り難うございます。
まとめレスで失礼します。

http://msdn.microsoft.com/ja-jp/library/fs2xkftw(VS.80).aspx
http://www.atmarkit.co.jp/fdotnet/dotnettips/027dispose/dispose.html
>などを見て、ProfileClass.Disposeメソッドを実装し、

「実装」など口はばったいこと書きましたが、実際は理解しないでコピペでした。
コメント部分に適切な処理を入れない限り殆ど意味の無い実装では?
本当にこのDispose()を実行したことが理由で、メモリ消費の右肩上がりが改善
されたのか自信がなくなってきました。(それでもSub Main()抜けた後での
Profile.Finalizeでのトレースが出なくなったのはDispose()の所為なんでしょう)

' Field to handle multiple calls to Dispose gracefully.
Dim disposed As Boolean = False

Public Overloads Sub Dispose() Implements IDisposable.Dispose
    Dispose(True)
    GC.SuppressFinalize(Me)
End Sub

Protected Overridable Overloads Sub Dispose(ByVal disposing As Boolean)
    If disposed = False Then
        If disposing Then
            ' Free other state (managed objects).
            disposed = True
        End If
    End If
    ' Free your own state (unmanaged objects).
    ' Set large fields to null.
End Sub

Protected Overrides Sub Finalize()
    Trace.WriteLine(DefFileFullPath, "PF:Finalize")
    Dispose(False)
End Sub


>を実行したところ、メモリ使用量の右肩上がりは止まりSub Main後のFinalizeも
>無くなったのでProfileClassの破棄は設計どおりになったと思います。

メモリ消費の一方的な右肩上がりは改善されてノコギリ状に増減するようになったものの、
・大量の画像処理実行中には、だんだんベースが上がっている。Sub Main後に一気に下がる
・ノコギリ状のメモリ増加量がProfileClassの見積量より大きいような気がする
→ProfileClass以外の解放忘れがあるのか?
メモリ消費のベース増加量がMB単位(10〜)である
画像Image以外にMB単位のメモリを消費するものを使っていない
→画像Imageの解放忘れの可能性が一番高いか
→画像Iconを作成するために一度に100個程度の画像Imageを読んではDispose()しているが

というような感じでProfile.Imageをキーワードにして処理ルーチンを見直します。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。