我最近开发了一个WPF应用程序,它通过一些自定义活动来托管工作流设计器。 在以下场景之后我遇到了内存问题(Out Of Memory Exception):我打开了一个超过150个活动的旧工作流,我开始修改所有这些(打开一个窗口,修改一些数据,保存并关闭窗口),直到异常发生。 在这个阶段,我的应用程序有1.4 GB的内存使用量,所以我开始寻找解决方案。 知道我在我的应用程序中使用MVVM,我正在使用数据和命令绑定,我的视图使用在metro mahapps窗口中定义的window.close()命令正确关闭。
我使用ANTS Memory Profiler查找泄漏源,当我的应用程序内存使用量为1.35 GB时,我拍了一张内存快照。 分析后,保存在内存中的实例是System.Byte []类型,GC根目录的路径是: System.Byte [] ==> System.IO.MemoryStream ==> System.Windows.Baml2006.SharedStream ==> System.Windows.Baml2006.BamlBinaryReader ==> System.Windows.Baml2006.Baml2006Reader ==> System.Windows.ResourceDictionnary ==> System.Windows.ResourceDictionnary [] ==>列表==> ResourceDictionaryCollection ==> ResourceDictionary ==> System.Windows.EffectiveValueEntry [] ==> MyView的
我非常感谢你的帮助。感谢。
答案 0 :(得分:0)
我在.net 4.0项目中遇到过这个问题。当时,这是工作流设计器的一个已知问题。我原以为这个问题已经在.net 4.5中得到了解决,但也许这个旧解决方案可能会有所帮助。
以下link允许您在自己的应用程序域中封送工作流设计器。因此,它可以有效地允许您使用AppDomain隔离WPF加载项加载设计器。
这确实消除了我在重新托管的解决方案中发生的内存泄漏问题。