【问题标题】:WPF WF4.5 Rehosted Designer Memory IssuesWPF WF4.5 Rehosted Designer 内存问题
【发布时间】:2016-12-31 21:04:59
【问题描述】:

我最近开发了一个 WPF 应用程序,它重新托管了一个带有一些自定义活动的工作流设计器。 在以下情况之后,我遇到了内存问题(Out Of Memory Exception):我打开了一个包含 150 多个活动的旧工作流,并开始修改所有活动(打开一个窗口,修改一些数据,保存并关闭窗口),直到发生异常。 在这个阶段,我的应用程序有 1.4 GB 的内存使用,所以我开始寻找解决方案。 知道我在我的应用程序中使用 MVVM,我正在使用数据和命令绑定,我的视图使用在 Metro mahapps 窗口中定义的 window.close() 命令正确关闭。

我使用 ANTS Memory Profiler 查找泄漏源,并在我的应用程序内存使用量为 1.35 GB 时拍摄了内存快照。 经分析,内存中保存的实例为 System.Byte[] 类型,GC root 的路径为: System.Byte[] ==> System.IO.MemoryStream ==> System.Windows.Baml2006.SharedStream ==> System.Windows.Baml2006.BamlBinaryReader ==> System.Windows.Baml2006.Baml2006Reader ==> System.Windows。 ResourceDictionnary ==> System.Windows.ResourceDictionnary[] ==> List ==> ResourceDictionaryCollection ==> ResourceDictionary ==> System.Windows.EffectiveValueEntry[] ==> MyView

非常感谢您的帮助。谢谢。

【问题讨论】:

  • 您使用的是 Autofac 还是其他 IOC 容器?
  • 不@helmsb,我不是

标签: c# wpf mvvm memory-leaks workflow-foundation-4


【解决方案1】:

我在 .net 4.0 项目中遇到过这个问题。那时,这是 Workflow Designer 的一个已知问题。我原以为这个问题已经在 .net 4.5 中解决了,但也许这个旧的解决方案可能会有一些用处。

以下link 允许您在其自己的应用程序域中编组工作流设计器。因此,它有效地允许您使用 AppDomain 隔离 WPF 加载项加载设计器。

这无疑消除了我们重新托管的解决方案中发生的内存泄漏问题。

【讨论】:

    猜你喜欢
    • 2011-08-02
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2012-09-24
    相关资源
    最近更新 更多