私は最近、いくつかのカスタムアクティビティでワークフローデザイナーをホストするWPFアプリケーションを開発しました。 以下のシナリオでメモリ不足に遭遇しました:150以上のアクティビティを持つ古いワークフローを開き、それらをすべて変更する(ウィンドウを開き、データを変更し、ウィンドウを保存して閉じる)まで例外が発生しました。 この段階で私のアプリケーションのメモリ使用量は1.4 GBでしたので、私は解決策を探し始めました。 アプリケーションでMVVMを使用していることを知り、データとコマンドのバインディングを使用しています。ビューは、metro mahappsウィンドウで定義されたwindow.close()コマンドを使用して正しく閉じられています。WPF WF4.5リホスティングデザイナーのメモリの問題
ANTSメモリプロファイラを使用してリークの原因を調べ、アプリケーションのメモリ使用量が1.35GBのときにメモリスナップショットを作成しました。 解析後、メモリに保持されているインスタンスはSystem.Byte []型で、GCルートのパスは次のとおりです。 System.Byte [] ==> System.IO.MemoryStream ==> System.Windows.Baml2006.SharedStream = => System.Windows.Baml2006.Baml2006Reader ==> System.Windows.ResourceDictionnary ==> System.Windows.ResourceDictionnary [] ==>リスト==> ResourceDictionaryCollection ==> ResourceDictionary ==> System.Windows.Baml2006.BamlBinaryReader ==> => System.Windows.EffectiveValueEntry [] ==> MyView
本当にありがとうございます。ありがとう。
オートファックまたは他のIOCコンテナを使用していますか? – helmsb
いいえ、@helmsb、私はいません – Ouuss