工具出现挂死问题
1.问题描述
工具出现挂死问题,巡检IIS发现以下异常日志
现网系统日志:
事件类型: 错误
事件来源: .NET Runtime
描述:
Application: DiyRingSet30Tool.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an internal error in the .NET Runtime at IP 791F7E06 (79140000) with exit code 80131506.
说明:此日志可以通过“开始”-“所有程序”-“管理工具”-“事件查看器”-“应用程序”,观察类型为错误或者警告的日志,一般出现错误日志都是应用程序错误导致的,请引起重视
2.修复方法
在工具的配置文件中新增以下红色的配置节点内容
<configuration>
<runtime>
<gcConcurrent enabled="false"/>
</runtime>
</configuration>
3.问题原因
原因:正在引用的对象被取消引用由垃圾回收器在公共语言运行库4(CLR4)中发生的问题。因此,垃圾回收或应用程序尝试访问已发布的对象的过程中发生访问冲突。
4.相关知识说明
垃圾回收器可自行优化并且适用于多种方案。 可基于工作负荷的特征使用配置文件来设置垃圾回收的类型。 CLR垃圾回收可以做内存移动也可以不做移动。不做移动时也称为“清扫”,清扫的代价要比做压缩的代价低一些,因为他不需要复制移动内存。CLR 提供了以下类型的垃圾回收:
4.1运行时GC工作模式
1)工作站模式:关闭并发的工作站GC、开启并发的工作站GC
2)服务器模式:服务器GC
工作站垃圾回收,用于所有客户端工作站和独立 PC。 这是运行时配置架构中的 <gcServer> 元素的默认设置。既可以是并发的,也可以是非并发的。 并发垃圾回收使托管线程能够在垃圾回收期间继续操作。从 .NET Framework 4 开始,后台垃圾回收取代了并发垃圾回收。
服务器垃圾回收,用于需要高吞吐量和可伸缩性的服务器应用程序。 服务器垃圾回收既可以是非并发或后台运行。
4.2各个GC模式的设计目标
1) 关闭并发的工作站GC为高性能服务器的高吞吐量做了优化。我们在垃圾回收