SL4、PRISM、MVVMを使用してLOBアプリケーションを構築しています。私は非常に最近私のアプリはメモリを解放していないことに気づいた。私はb/wページを切り替えると、約150MBから始まり、1GB +まで非常に高速になります。私たちのデザインには、それぞれイベントを待ち受けて適切な領域にビューを注入するControllerクラス(Unityシングルトン)を持つ3つのモジュールが含まれています。これは、イベントを発生させてビューを挿入するときに、これらのコントローラで起こっていることです。シルバープリズム/ユニティのメモリリーク
var v = Container.resolve<view>()
var vm = Container.resolve<viewmodel>()
v.datacontext = vm;
myregion.addtoregion(v);
このように、このビューを100回呼び出すと、これを100回終了します。 addviewregionメソッドでは、新しいビューを追加する前に、既存のビューをすべて削除します。そして、メモリの問題を見た後、私は削除する必要のあるすべてのビューに対して、addviewtoregionメソッドでビュー& viewmodelをnullに設定しました。メモリ消費量は同じです。 Unity ContainerControllled ...これらのオブジェクトへの参照を保持するオブジェクト(マイコントローラ)ですか?
これは考えられる原因です。イベントアグリゲータイベントの弱いイベント処理を使用する必要があります。 –
解決されたオブジェクトがガベージコレクションされていないか、コンテナ設定に問題があるようです。私は次のコードでテストしました: – user396491
WeakReference ref1 = new WeakReference(Container.Resolve