Java 递归StackOverflowError解决方法

3 篇文章 0 订阅
  1. 第一步:
    先检查递归的结束条件对不对。如果递归结束条件不对, 必须对条件进一步修改,直到正确为止。
  2. 第二步:
    如果假设递归条件没问题 这个时候需要手动的调整JVM的栈内存初始化大小。 可以将栈内存的空间调大点。(可以调整大一些。)
  3. 第三步:
    调整了大小,如果运行时还是出现这个错误, 没办法,只能继续扩大栈的内存大小。

(java -X)这个可以查看调整堆栈大小的参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
java.lang.StackOverflowError是由于栈溢出引起的错误,通常是由于无限递归或死循环引起的。解决方法如下: 1.检查代码中是否存在无限递归或死循环,特别是在多个实体类之间有多对一、多对多关系时,重写toString方法的时候一定要注意,不要两个有对应关系的实体类都重写相关联属性字段的toString方法,这样会导致一直递归重写下去,内存当然会被耗尽,导致栈溢出。 2.增加栈大小,可以通过-Xss参数来增加栈大小,但是这种方法并不是根本解决问题的方法,只是暂时解决问题。 3.优化代码,减少递归深度或循环次数,可以通过迭代代替递归,或者使用尾递归等方式来优化代码。 4.使用数据结构来代替递归,例如使用栈或队列等数据结构来实现递归算法。 <<引用:我的错误原因是原因1,我首先是增加的-Xss参数,后来发现还是报错,后来仔细检查,才知道是产生了死循环,所以,大家一定要检查仔细了 复现 public class StackOverflowErrorExample { public static void main(String args[]) { a(); } public static void a() { a(); } } 。 引用:原因1:递归导致,死循环或者无限循环调用,多个实体类之间有多对一、多对多 关系时,重写toString方法的时候一定要注意,不要两个有对应关系的实体类都重写相关联属性字段的toString方法,这样会导致一直递归重写下去,内存当然会被耗尽,导致栈溢出 造成我查你你查我,循环往复,就形成了递归,进而引起stackoverflow。细致的检查报错信息,找出行号的重复模式。这些重复的行号代表了被递归调用的代码。仔细审查代码,理解为何递归不终止。>>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值