none
MVVMについて RRS feed

  • 質問

  • MVVM(Livet)を使って入力フォームを設計する際にリスト(主にコンボボックスなど)

    選択することを趣旨としたリストについてもメモリリークの対象となるでしょうか?

    具体的にはRepositoryクラスでDBよりデータを取得し、Modelのコレクションとして

    ViewModelにプロパティとして持たせる、そのリストは選択するだけで、特にデータ更新等は

    行わない、というものです。

    Modelにはプロパティの更新イベントは実装していません。

    リストの件数は3000~4000くらいでリストをぐりぐりスクロールさせると、

    メモリ使用量がぐんぐん上がっていくのをタスクマネージャで確認しました。

    (これがMVVMが問題視しているメモリリークなのか私は判断できません)

    これが問題視されているものならばどのように対処すればよいでしょうか?

    2012年5月26日 12:51

回答

  • 書かれてる内容の範囲でしたら、特に関係ないと思います。


    かずき Blog:http://d.hatena.ne.jp/okazuki/

    • 回答としてマーク yukiotoko 2012年5月26日 15:27
    • 回答としてマークされていない yukiotoko 2012年5月26日 15:28
    • 回答としてマーク yukiotoko 2012年5月26日 15:32
    2012年5月26日 13:56

すべての返信

  • 書かれてる内容の範囲でしたら、特に関係ないと思います。


    かずき Blog:http://d.hatena.ne.jp/okazuki/

    • 回答としてマーク yukiotoko 2012年5月26日 15:27
    • 回答としてマークされていない yukiotoko 2012年5月26日 15:28
    • 回答としてマーク yukiotoko 2012年5月26日 15:32
    2012年5月26日 13:56
  • 回答いただきありがとうございます。

    まだWPFもMVVMも右も左も分からない状態です。

    大変助かります。

    ありがとうございます。

    2012年5月26日 15:32
  • こんにちわ。Livetのauthorです。

    ★メモリリークかどうかの確認

    メモリ使用量がグングン増えているならば、
    なんらかのボタンを一時的に用意するなどして

    GC.Collect();
    GC.WaitForPendingFinalizers();
    GC.Collect();

    を呼び出してみてください。

    それでもメモリ使用量が減らないのであれば(つまりスクロールするたびにメモリ使用量が増えていくならば)確かにメモリリークです。

    ★メモリリークの原因の調査

    メモリリークの調査は、WPF環境であるならば幸いそこまでは難しくありません。

    http://msdn.microsoft.com/ja-jp/library/bb190764.aspx

    を参考にしながらDumpHeapコマンドでリークして増えているオブジェクトを、
    GCRootコマンドでそのオブジェクトを参照しているオブジェクトを調べる事ができます。
    GCRootコマンドの結果に想定外の参照が存在した場合それがメモリリークの原因です。

    イベント由来のリークの場合、「イベントの発行元がイベントの受信オブジェクトをいつまでも参照しっぱなし」が原因です。
    イベント由来のリークについて詳しくはこちらに書いたので参照してください。

    http://ugaya40.net/codememo/commonweakevent.html

    ★Livetについて

    もしもLivet由来であったと判明した時は対応しますのでお知らせください。
    よろしくお願いいたします。

    なおLivetは1.0パッケージはすでに用意できており、現在ドキュメントをサイトを構築中です。

    もしも0.99で不満がある場合は1.0を利用していただけると幸いです。

    Livet1.0パッケージ http://dl.dropbox.com/u/31027404/LivetSetup_1.0.0.exe

    Livet0.99からの変更点 https://gist.github.com/2787412

    以上、よろしくお願いいたします。



    2012年5月27日 9:33