据MSDN,有一个“提示”指出,在重负载下运行并发垃圾收集.NET应用程序(无论是<gcConcurrent enabled="true"/>
或指定,因为它是默认的行为)可能会抛出一个ExecutionEngineException。有没有人知道一个Microsoft知识库文章或其他来源提供了额外的背景?为什么并发GC有时会导致ExecutionEngineException(每个MSDN)?
我们已经与基于3.2 NHibernate的Windows服务应用程序,这将至多几个小时的手术后,总是崩溃直接经历过这个。我们能够追踪到ISession.Flush()调用的异常。
有上nhusers报告似乎是同样的问题thread。尽管切换到隐式禁用并发GC的服务器模式GC(<gcServer enable="true"/>
),他建议的解决方法是禁用并发GC,但它仍然有效。
提交这MS作为一个bug之前,我想看看是否有任何人有尖端提到了并行GC instablity的附加信息。
鉴于它被记录在案,您的错误可能会被视为“按设计”关闭。除此之外,有趣的问题。 – vcsjones
@Nick Jones:.NET 4.0文档也将其列为过时,并声明运行时不再抛出此异常。 – casperOne
@casperOne:注意到,但是NH 3.2是针对.NET 3.5编译的。 –