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

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

错误场景如下

在这里插入图片描述

解决思路

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

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

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

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

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

总结

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

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值