内存溢出错误,怎么排查?

usun82 2009-12-28 10:05:08
程序出现下面的报错:

引发类型为“System.OutOfMemoryException”的异常。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.OutOfMemoryException: 引发类型为“System.OutOfMemoryException”的异常。

在网上搜索了下,说是:内存溢出,上溢 一般不是内存不足 程序内部出现递归死循环,导致大量消耗内存出现的错误;

我怎么排查错误,确定错误在什么地方呢?谢谢!!!
...全文
308 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
shihunjiangjie 2010-01-09
  • 打赏
  • 举报
回复
看看数据类型有没有出错
archu 2010-01-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ylmumu 的回复:]
在循环 或者 显示 时读取数据量比较大的时候 都有可能内存溢出  啊 

机器 不用的进程关掉  服务不要开太多啊  如果干某个事情时 内存溢出  最好重启下啊
[/Quote]

第一点说得有道理。

第二点有点误导人,OutOfMemoryException不一定是由于物理内存不够,虚拟内存不够也会导致OOM。对于一个Process来讲,32位系统上虚拟内存寻址空间只有2GB。所以诊断OOM的问题先要区分清楚到底啥内存不够了。

archu 2010-01-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 silentwins 的回复:]
看看哪里死循环了...
[/Quote]

死循环只会导致CPU 100%
除非你的循环里面不断地创建新对象而又不释放,才有可能最终导致OutOfMemoryException
archu 2010-01-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lcl_data 的回复:]
应该是递归的原因,那你注意检查一下你的递归吧

[/Quote]

如果是递归出不来的话,会引起以下两个问题,并不是OutOfMemoryException
1) CPU 100%
2) StackOverflowException
AngleBabyHong 2009-12-28
  • 打赏
  • 举报
回复
代码问题。
happy664618843 2009-12-28
  • 打赏
  • 举报
回复
可能是索引超出的范围 有可能是while for循环导致的
jaguar_yang 2009-12-28
  • 打赏
  • 举报
回复
用性能工具分析,如果出内存溢出的频率很高,一定是代码的问题,在找到问题之前,你可以新建一个应用程序池,将回收时间设为1小时就可以了。
archu 2009-12-28
  • 打赏
  • 举报
回复
根据http://support.microsoft.com/kb/286350抓取hang dump

然后进行分析
cuike519 2009-12-28
  • 打赏
  • 举报
回复
关于.NET内存的部分我前两天写了两篇博客,楼主有兴趣可以看看,也可以
《性能分析摘要》
http://blog.csdn.net/cuike519/archive/2009/12/14/5004245.aspx
《.NET内存分配浅析》
http://blog.csdn.net/cuike519/archive/2009/12/23/5063333.aspx

YLMuMu 2009-12-28
  • 打赏
  • 举报
回复
在循环 或者 显示 时读取数据量比较大的时候 都有可能内存溢出 啊

机器 不用的进程关掉 服务不要开太多啊 如果干某个事情时 内存溢出 最好重启下啊
usun82 2009-12-28
  • 打赏
  • 举报
回复
我现在就是不知道要贴哪个部分的代码呀
程序漫步 2009-12-28
  • 打赏
  • 举报
回复
吧代码贴出来看看~
usun82 2009-12-28
  • 打赏
  • 举报
回复
当时写循环的人都已经找不到了,怎么个项目中有循环的地方太多了,有没有办法确定是在那个页面的循环出问题了
bobui 2009-12-28
  • 打赏
  • 举报
回复
这个就难办了,不过还是有办法的,你多断点,看在哪个里面出错。整体中找局部,局部中再定位
Lovely_baby 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 usun82 的回复:]
前辈们,我页面有很多循环的地方,我怎么确定在哪里呢,代码不是一个人写的。
[/Quote]
汗~~
自己看看循环里的 开始和结束是不是太模糊~~
或者有递归存在~~
jin225 2009-12-28
  • 打赏
  • 举报
回复
让写代码的人 都把自己的代码查看一遍 !!
要不都断点调试下!
usun82 2009-12-28
  • 打赏
  • 举报
回复
前辈们,我页面有很多循环的地方,我怎么确定在哪里呢,代码不是一个人写的。
Lovely_baby 2009-12-28
  • 打赏
  • 举报
回复
查看页面的for循环之类的.......
看看是否构成死循环~~
silentwins 2009-12-28
  • 打赏
  • 举报
回复
断点,不断按F10拼命跑...
silentwins 2009-12-28
  • 打赏
  • 举报
回复
看看哪里死循环了...
加载更多回复(1)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧