【发布时间】:2010-10-12 16:32:10
【问题描述】:
创建应用程序域如此昂贵的确切原因是什么。它们共享相同的堆、相同的程序集等。消耗如此多资源的 CLR 究竟需要做什么?
我们已经看到从另一个 appdomain 访问类型/实例需要 10 秒的场景 (更新:两个 appdomains 将使用的所有必需程序集都已加载到生成新 appdomain 的当前 appdmomain , 除了一个)。有趣的是,这只发生在第一次访问时。所有后续访问都非常快。
更新2:
我们附上了 VS 2010 采样分析器,结果如下:
做大部分个人工作的功能: System.AddIn.Pipeline.FrameworkElementAdapters.ViewToContractAdapter(类 System.Windows.FrameworkElement) 独家样品 %43,02
(是的,我们在这里使用 WPF 插件 API)
【问题讨论】:
-
好问题,我等着用诱饵呼吸:)
-
您在安全的环境中工作吗?我过去在 appdomains 和安全检查方面遇到过问题。您是从磁盘加载程序集还是从内存中加载程序集?
-
完全不涉及 CAS。从磁盘加载一个小程序集。其余程序集已加载到默认应用程序域中。
标签: .net performance clr