调试OutOfMemoryException

6

在我制作的一个小型ASP.NET/C# Web应用程序的错误修复中,我遇到了OutOfMemoryException。

由于这是一个编译时错误,因此找不到任何提示。我该如何诊断这个异常?我认为这正是内存分析发挥作用的地方?有什么建议吗?

谢谢。


2
你的意思是什么,它是一个编译时错误?编译器是抛出了OutOfMemoryException吗? - asgerhallas
2
编译时内存不足会表明你的源代码非常奇怪。在C++中,唯一我能想到的方法是递归包含文件(即a.h包含b.h,而b.h包含a.h)- C#是否有类似的概念?你基本上必须做一些导致解析树崩溃的事情。 - Michael Kohne
是的,编译器本身会抛出错误。在尝试调试时,没有 ysod,但在输出窗口中出现了错误。我认为罪魁祸首是我有一个 3mb 的 xml 文件,我解析它(其中包含 rss 源),然后在自定义的 rss 源阅读器中显示它。我关闭了开发 Web 服务器并解决了问题。 - GurdeepS
在我的情况下,是一个 Crystal Report(RPT 文件)导致了所有的问题,我排除了该文件后项目开始正常工作。 - Bachask8
4个回答

5

当OutOfMemoryException异常发生时,您应该在程序内存快耗尽的那个时间点上进行内存转储,并分析哪些内容占用了如此多的内存。

Tess Ferrandez在她的博客上有一系列优秀的教程,可供参考。


1

抱歉,但对我来说已经发生了三次以上——Redgate要么破坏了VS,要么破坏了整个Windows...尝试这个方法。我猜你问题的根本原因是调试不足,请检查log4net。同时,简单的代码

if (DebuggingFlag == true)
    Response.Write("DebugMsg")

听起来虽然简单而荒谬,但可能会有用...


1

1

我希望你指的是运行时错误,而不是编译时错误。

通常情况下,如果您有一个正在增长的列表,它保存在静态字段或系统范围的ASP.NET容器中,就会发生这种情况。

您可以在分析器中运行应用程序,例如:

Red gate ants profiler


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接