项目中遇到System.StackOverflowException和System.OutOfMemoryException

本文分享了解决代码执行过程中出现System.StackOverflowException及System.OutOfMemoryException的方法。StackOverflowException由无限递归引起,改为循环即可解决;OutOfMemoryException则是因为尝试分配过大内存空间所致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    转眼在博客园已经呆了两年多了,在这两年多的时间内,一直是在看别人的文章,自己都不怎么发表文章。现在2012年的世界末日也过去了,2013年的元旦也来了,忽然想起是不是应该写点东西了。正好,这段时间做项目时,也解决过一些问题,正好把收获点写写。

问题1:代码执行过程中发生System.StackOverflowException

问题2:代码执行过程中发生System.OutOfMemoryException

  之前一直没遇到过这两个异常,这可能是由于写的代码不多和维护的项目不多的缘故。问题1是代码执行3小时之后发生的,当时就简单想着是不是内存不够用了,导致溢出了,这时内存占用应该非常大,不过通过任务管理器来查看,否定了自己的看法,此时内存的占用量只是200M.后来通过查看资料和查阅代码,发现代码中存在无限递归的处理,而这正是System.StackOverflowException发生的原因。找到了问题所在,把递归转换成循环,问题就解决了。

问题2和问题1基本相似,都是和内存有关的错误。当代码中出现类似 Int【】【】【】【】 =new int [][][][]这样的代码时,出现System.OutOfMemoryException的可能性就比较大了。四维数据如果每个维度都是1000以上的话,就有可能出现异常,原因是系统中没有这么大的内存可以分配。 

以上两个是最近做项目过程中遇到的问题,整理一下,以备日后查阅。

转载于:https://www.cnblogs.com/courser/archive/2013/01/22/2867469.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值