Theo MSDN, có một "mẹo" nói rằng ứng dụng .NET chạy dưới tải nặng với bộ sưu tập rác đồng thời (hoặc <gcConcurrent enabled="true"/>
hoặc không xác định, vì đó là hành vi mặc định) có thể ném một ExecutionEngineException. Có ai biết về bài viết Microsoft KB hoặc nguồn khác cung cấp thêm nền tảng về điều này không?Tại sao GC đồng thời đôi khi gây ra ExecutionEngineException (trên MSDN)?
Chúng tôi đã trải nghiệm điều này trực tiếp với ứng dụng Dịch vụ Windows dựa trên nền tảng NHibernate 3.2, điều này sẽ luôn sụp đổ sau ít nhất một vài giờ hoạt động. Chúng tôi đã có thể theo dõi ngoại lệ cho cuộc gọi ISession.Flush().
Có một số thread trên người nhai báo cáo có vẻ là vấn đề tương tự. Cách giải quyết được đề xuất của ông, đó là vô hiệu hóa GC đồng thời, đã làm việc cho chúng tôi cho đến nay, mặc dù chuyển sang chế độ máy chủ GC (<gcServer enable="true"/>
), điều này ngầm vô hiệu hóa GC đồng thời cũng đã thực hiện thủ thuật.
Trước khi gửi lỗi này cho MS dưới dạng lỗi, tôi muốn tìm hiểu xem có ai ngoài đó có thông tin bổ sung về tính đồng bộ GC đồng thời mà mẹo đề cập hay không.
Do thực tế là tài liệu được viết, lỗi của bạn có thể bị đóng là "Theo thiết kế". Đó sang một bên, câu hỏi thú vị. – vcsjones
@Nick Jones: Tài liệu .NET 4.0 cũng liệt kê nó là lỗi thời và nói rằng thời gian chạy không còn ném ngoại lệ này nữa. – casperOne
@casperOne: đã lưu ý, nhưng NH 3.2 được biên dịch dựa trên .NET 3.5. –