有没有办法在运行时获得有关 OutOfMemoryException 的更多详细信息?或者,这个异常能否以某种方式不被封闭的 try/catch 捕获,而是一个 try/catch 更高的调用堆栈?我无法使用 WinDBG 进行复制,因此它必须是我可以从应用程序登录的内容。
对于冗长的解释,我深表歉意,但有很多可能的原因需要消除,我对此进行了解释。
我已经阅读了 OutofMemoryException 的所有可能性,并基本上消除了所有这些可能性。通常,应用程序运行良好,但有时仅在某些计算机上,我会收到 OutOfMemoryException。由于这些报告在现场无法在本地重现,因此我只有日志可以查看。但我有相当多的细节。
奇怪的是:
最近在应用程序的不同部分发生了几次。第一次,我断定存在损坏的 .NET 程序集,因为异常发生在它第一次加载 System.Web.Serialization 程序集时。我可以确定它是在第一次使用该程序集的方法调用期间发生的。重新映像计算机(与原始设置相同)和更新 Windows 解决了此问题。
但是,在我看来,在几天内发生的第二种情况(不同的客户)也是腐败的可能性很小。这种情况发生在不会加载任何程序集的位置。我现在正在重新考虑第一个错误。我所知道的:
有一些 COM 对象的用途。然而,在正常情况下,我们运行应用程序数周没有内存问题,当我们得到这些异常时,它们几乎立即发生,仅使用大约 20 个相对轻量级的 COM …