系列十四(面试)、谈谈你对StackOverflowError的理解?

一、StackOverflowError

1.1、概述

        StackOverflowError是栈内存溢出的意思。栈中主要存储的是8种基本数据类型 + 引用类型 + 实例方法,栈的空间也是有限的,当存储进栈中的容量大于栈的最大容量时,就会报StackOverflowError的错误。

1.2、案例

/**
 * @Author : 一叶浮萍归大海
 * @Date: 2023/12/20 21:45
 * @Description: 演示栈内存溢出
 * JVM配置如下参数:-Xss128k -XX:+PrintGCDetails
 */
public class StackOverflowErrorMainApp {

    private int stackLength = 1;

    public void stackLeak() {
        stackLength++;
        stackLeak();
    }

    public static void main(String[] args) {
        StackOverflowErrorMainApp stackOverflowErrorMainApp = new StackOverflowErrorMainApp();
        try {
            stackOverflowErrorMainApp.stackLeak();
        } catch (Throwable e) {
            System.out.println("stackLength = " + stackOverflowErrorMainApp.stackLength);
            e.printStackTrace();
        }
    }

}

系列十四(面试)、谈谈你对StackOverflowError的理解?_第1张图片

1.3、生产上如何避免

        避免死循环、递归调用。

1.4、StackOverflowError是错误还是异常

        StackOverflowError是个错误,其继承体系和api说明如下:

系列十四(面试)、谈谈你对StackOverflowError的理解?_第2张图片

你可能感兴趣的:(JVM系列,JVM)