我希望有人能告诉我是什么导致了这个错误:
尝试读取或写入受保护的内存。这通常表示其他内存已损坏。
我不能真正发布代码,因为这个错误似乎被抛出在应用程序的任何随机区域。在抛出错误之前,应用程序将运行12-48小时。有时它会停在一个看似随机的地方,抛出上面的错误,其他时候整个应用程序停止,我得到一个屏幕上的错误,说什么“有一个致命的错误在... 这可能是一个错误在 CLR 或...”一些关于 PInvoke 或其他不相关的信息。当这种情况发生时,所有线程都显示已终止,并且没有可用的调试信息。
简而言之,这就是应用程序所做的:
它是一个完全用 C # 编写的多线程服务器应用程序。客户端通过套接字连接到服务器。服务器为客户机运行一个虚拟的“环境”,在这个环境中,客户机可以相互交互,也可以与环境交互。它消耗了相当多的内存,但我没有看到它泄漏。它通常消耗大约1.5 GB。我不认为它泄漏,因为内存使用保持相对恒定的整个应用程序运行时间。它不断运行代码来维护环境,即使客户端什么也不做。它不使用第三方软件或其他 API。此应用程序使用的唯一外部资源是套接字连接和 SQL 数据库连接。它运行在64位服务器上。我已经尝试在 VS2008和 VS2010中使用。Net 2.0、3.5和4.0以及多个服务器上,问题最终还是会出现。
我试过关闭编译器优化和几个微软修补程序。似乎没有什么能解决这个问题。如果任何人知道任何可能的原因,或某种方式来确定什么引起了问题,我们将不胜感激。