如何在ASP.NET中调试OutOfMemoryException?

时间:2009-08-10 20:59:57

标签: c# asp.net debugging

我正在读取.opml文件并解析它以生成我订阅的每个RSS订阅源的文章列表,从而添加到此.opml文件中。

有时,当在Visual Studio(运行)上按下播放时,我收到一个错误(不例外),说明OutOfMemoryException。这是在应用程序甚至可以运行之前(但已编译)。有问题的页面(错误出现在带有相关页面的输出窗口中)是RSS阅读器页面,它调用方法进行解析。

如何完全修复此错误?此错误有时会出现,因此很难重现。一些信息指向我的开发环境的问题,而不是站点或Visual Studio(这可能意味着另一组变量在实时)。此异常是否与潜在的内存泄漏有任何关联(这是否可能是警告)?内存分析会有帮助吗(我有一个内存分析器)?

由于

2 个答案:

答案 0 :(得分:0)

如果我理解正确,Visual Studio本身就是OOM并报告它无法启动调试过程。 devenv.exe进程是否使用了大量内存?如果你在64位操作系统上使用VS 2005,你可以try the advice from this post使devenv.exe使用4GB,也许可以缓解你的问题。

如果VS本身不是OOM,则需要找到问题所在。罪魁祸首应该是显示在具有大VM大小的任务列表中的罪魁祸首。在调试器下运行VS本身可能会有所帮助。此外,有时系统错误(如内核资源耗尽)会转换为OOM错误。

答案 1 :(得分:0)

你是如何解析这个的?您可以通过各种方式耗尽内存,例如在紧密循环中执行此操作:

for(....)
{
  //Creates immutable strings faster than they can be garbage collected 
  nextXMLPart = nextXMLPart + " " + something;
}

文件有多大?如果您正在将整个文件读入内存中,那就可以了。

如何,我开始关注任何重复的循环。如果这不起作用,启动任务人员并在代码中放置断点。当内存使用率开始上升时,请关注该应用的位置。