小记:java.lang.StackOverflowError(堆栈溢出错误)

首先我们需要明白java产生堆栈溢出的原因然后再来思考我们遇到的问题。

错误场景如下

在这里插入图片描述

解决思路

堆栈内存溢出的原因无非分为两种

  • 系统的空间确实不够
  • 我们的程序出现了死循环(例如一直递归的调用自己)

很快的排除了第一种情况,因为自己的这个项目纯粹练手,未涉及太多的内存消耗,那么围绕着第二种情况展开思考。观察错误,不难发现系统总是在初始化Orders和Munu,难道是死循环的创建了???
在这里插入图片描述

带着疑问我们开始检查项目源码,找到对应得这俩家伙初始化的地方
在这里插入图片描述
在这里插入图片描述

哇,你中创建我,我中创建你,生生不息,你中有我,我中有你!!!虽然很美好,但这就是问题的源头,于是一刀将其二人斩断,问题卒。

总结

当线程请求的栈深度大于虚拟机允许的深度,也就是当前线程请求方法太多,导致栈溢出,一般情况下只有死循环调用方法才会达到这种深度。解决的时候可以先尝试Eclipse中JDK的默认给的空间进行调整,Eclipse内存调整(修改JDK使用内存)排出第一种纯粹的内存空间不足。其次再是检查项目,估计程序里面有死循环,类似递归没有写结束什么的。

  • 3
    点赞
  • 6
    收藏
  • 打赏
    打赏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:黑客帝国 设计师:我叫白小胖 返回首页
评论 1

打赏作者

落笔云

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值