小记:java.lang.StackOverflowError(堆栈溢出错误)
Posted 落笔云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小记:java.lang.StackOverflowError(堆栈溢出错误)相关的知识,希望对你有一定的参考价值。
首先我们需要明白java产生堆栈溢出的原因然后再来思考我们遇到的问题。
错误场景如下
解决思路
堆栈内存溢出的原因无非分为两种
- 系统的空间确实不够
- 我们的程序出现了死循环(例如一直递归的调用自己)
很快的排除了第一种情况,因为自己的这个项目纯粹练手,未涉及太多的内存消耗,那么围绕着第二种情况展开思考。观察错误,不难发现系统总是在初始化Orders和Munu,难道是死循环的创建了???
带着疑问我们开始检查项目源码,找到对应得这俩家伙初始化的地方
哇,你中创建我,我中创建你,生生不息,你中有我,我中有你!!!虽然很美好,但这就是问题的源头,于是一刀将其二人斩断,问题卒。
总结
当线程请求的栈深度大于虚拟机允许的深度,也就是当前线程请求方法太多,导致栈溢出,一般情况下只有死循环调用方法才会达到这种深度。解决的时候可以先尝试Eclipse中JDK的默认给的空间进行调整,Eclipse内存调整(修改JDK使用内存)排出第一种纯粹的内存空间不足。其次再是检查项目,估计程序里面有死循环,类似递归没有写结束什么的。
以上是关于小记:java.lang.StackOverflowError(堆栈溢出错误)的主要内容,如果未能解决你的问题,请参考以下文章