文章目录 1. 问题引出 2. 分析问题 2.1 为什么递归调用会导致堆栈溢出 2.2 数组太大或分配内存多于可用内存导致堆栈异常 3. 优化避免栈溢出 3.1 尾递归优化 3.2 循环替代递归 1. 问题引出 今天在编码时,出现了java.lang.StackOverflowError,就感觉很莫名其妙。 由于源代码涉及到公司业务,暂无法公开到博客上,望读者见谅。 但为了复现StackOverflowError的错误,我特地编写如下代码来模拟: /** * 使用junit注解来调用testDegression方法 * * @author super先生 * @datetime 2023/2/15 20:41 */ @Test public void testStackOverFlow() { te