mar*_*ark 6 .net executionengineexception
我们的应用程序有时会引发一种情况ExecutionEngineException.我认为当它发生时,应用程序应该崩溃,但它不会崩溃.即使事件查看器声称应用程序已终止 - 它仍继续运行!只是看起来有问题的线程被静默杀死.
问题是我们无法在发生时重新创建条件 - 可疑代码在异常发生之前执行了数千次.日志中没有任何内容.简而言之 - 我们感到困惑.
我希望能够随意生成此异常,以便了解应用程序在发生时的行为方式.当然,它必须由框架本身抛出,发布throw new ExecutionEngineException不计算在内.
所以,我的问题是 - 我怎样才能可靠地引起它?请提供代码示例.
我们在.NET 4上,很快就转向.NET 4.5
小智 4
来自MSDN 文档:
在某些情况下,当应用程序或其运行的系统负载过重时,面向 .NET Framework 的应用程序可能会在垃圾回收期间引发 ExecutionEngineException 异常。在这种情况下,要解决此问题,您可以通过修改应用程序的配置文件来禁用并发垃圾收集。有关详细信息,请参阅 如何:禁用并发垃圾收集。
如果 MSDN 文档建议的解决方法不适合您,您将必须根据您对软件的了解进行测试。
现在,创建一个模拟实际应用程序的负载、多线程行为和内存消耗的测试应用程序是一回事 - 使用实际软件作为测试软件可能会更好(也许通过一些额外的调试日志记录+测试代码进行增强) 。这意味着,不幸的是这里没有代码示例:(
为了使负载测试有意义,您还需要在与生产系统具有非常相似(如果不是完全相同)的硬件/软件配置的测试系统上运行这些测试。只有这样您才能查明您的 ExecutionEngineException 是由 GC 引起的还是由其他损坏的运行时引起的。
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |